pyquery 強大的爬蟲搜尋工具

2021-10-23 21:51:20 字數 4108 閱讀 7460

匯入pyquery :

from pyquery import pyquery
取**塊:
doc = pyquery(

"html**"

)doc = pyquery(url =

"請求頁面url"

)doc = pyquery(filename =

"檔案路徑"

)

css選擇----縮小範圍

以乙個html頁面舉例:

lang

="en"

>

>

charset

="utf-8"

>

>

demotitle

>

head

>

>

class

="list"

>

class

="item-0"

>

frist lineli

>

class

="item-1"

>

second lineli

>

class

="item-0 active"

>

href

="">

third linea

>

li>

class

="item-1 active"

>

href

="">

class

="des"

>

fourth linespan

>

a>

li>

ul>

div>

html

>

要找到htm文字中所有的li標籤:

doc(

"li"

)

要找到class = item-1的標籤

doc(

".item-1"

)

找到「item-0 active」標籤的內容:不加空格

doc(

".item-0.active"

)

通過選擇器過濾:加空格表示尋找子集

#找到#container .list下的li標籤

doc(

"#container .list li"

)

doc = pyquery(filename=

'demo.html'

)li = doc(

"li:first-child"

)print

(li)

注意:

1、doc("#container .list li") 是pyquery型別

2、如果要迴圈,則迴圈的是doc("#container .list li") .items()列表:

doc = pyquery(filename=

'demo.html'

)lis = doc(

'li'

)# items()解包

for li in lis.items():

print

(li)

# 找到li標籤內部的字元

print

(li.text(

))

找節點

找節點 其實也是在找**塊,只不過範圍更小

可以找尋的節點有:

1、子節點----------------------find方法 children方法

2、父節點----------------------------------- parent方法

3、祖父節點-------------------------------parents方法

4、兄弟節點-------------------------------siblings方法

先找到**塊後,再去縮小範圍找節點:

子節點:

items = doc(

'.list'

)#找到class = list的**塊

lis = items.find(

'li'

)#找到**塊中的所有li標籤

或者使用children方法:

items = doc(

'.list'

)#找到class = list的**塊

children = items.children(

'.li'

)#找到**塊中的所有li標籤

父節點

parent = items.parent(

)#找到**塊的父節點(上一級節點)

print

(parent)

祖父節點

parents = items.parents(

)#找到**塊的祖父節點(上兩級節點)

print

(parents)

注意:

1、祖父節點的找尋是從當前標籤開始的,會從父節點和叔叔節點(兄弟節點的父節點)兩條線路找到祖父節點,並列印祖父、父親

2、可以使用祖父節點找父節點(一般不常用):

parents = items.parents(

'#container'

)#祖父節點根據id找父節點

print

(parents)

兄弟節點

bro_li = li.siblings(

)print

(bro_li)

也可以找指定的兄弟節點

# 兄弟節點 定位

bro_li = li.siblings(

'.item-1'

)print

(bro_li)

屬性獲取

使用attr方法獲取屬性

a = doc(

".item-0.active a"

)a.attr(

'href'

)#獲取標籤中的屬性值

# 也可以使用

a.attr.href

attr方法也可以新增標籤的屬性:

a.attr(

"name"

,"bin~ibn"

)

文字

text方法

html方法

doc = pyquery(filename=

'demo.html'

)a = doc(

".item-0.active a"

)print

(a.text())

#字串型別

print

(a.html())

#字串型別

注意:

1、text()方法可以一次性將所有的文字取出來,html()方法只是取一條文字

2、使用a.html輸出文字資訊,如果a包含多條資訊,那麼a.html 只能輸出一條資訊,需要迴圈遍歷

節點操作

刪除節點:remove_class

新增節點:add_class

doc = pyquery(filename=

'demo.html'

)li = doc(

".item-0.active"

)li0 = li.remove_class(

'active'

)print

(li0)

li1 = li.add_class(

'qyb'

)print

(li1)

這個操作的作用是:

可以對文字的節點進行修改,html中可能會有重複的css選擇器標籤,利用節點操作可以方便後續的查詢

Python爬蟲之PyQuery的用法

python教程全解 1 安裝 pip install pyquery 2 官方文件 3 初始化 1 直接字串 pq 引數可以直接傳入 html doc 現在就相當於 jquery 裡面的 符號了 from pyquery import pyquery as pq doc pq 2 lxml.etr...

python 爬蟲前奏二 pyquery的使用

doc pq html doc pq filename demo.html 但是需要修改pyquery的原始碼 if filename in kwargs html open kwargs filename html open kwargs filename r encoding utf 8 doc...

linux grep命令,強大的文字搜尋

原文 http www.9usb.net 200902 linux grep.html 1.作用 linux系統中grep命令是一種強大的文字搜尋工具,它能使用正規表示式搜尋文字,並把匹配的行列印出來。grep全稱是global regular expression print,表示全域性正規表示式...