匯入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,表示全域性正規表示式...