python網路爬蟲精解之pyquery的使用說明

2022-09-25 02:06:07 字數 3065 閱讀 6937

目錄

pyquery的使用

使用pyquery需要在web和了解jquery的基礎上,使用該css選擇器。

使用pyquery初始化的方式有很多,傳入的引數可以是字串,也可以是url和檔名,下面將一一介紹初始化方法。

字串html = '''

charset="utf-8">

test02.html

'''from pyquery import pyquery as pq

doc = pq(html)

print(doc('title'))

【執行結果】

test02.html

urlurl以csdn首頁位址為例:

from pyquery import pyquery as pq

doc = pq(url = '')

print(doc('title'))

【執行結果】

csdn - 專業開發者社群

檔案初始化

我們將以下字串儲存為乙個html檔案,通過檔案的形式進行初始化。

【test02.html】

harry potter

29.99

learning xml

39.95

from pyquery import pyquery as pq

doc = pq(filename = 'www.cppcns.comtest02.html')

print(doc('title'))

【執行結果】

harry potter

learning xml

(1)查詢子節點

查詢子節點時需要用到find()方法,此時傳入的引數是css選擇器。

from pyquery import pyquery as pq

doc = pq(filename = 'test02.html')

item = doc('book')

print(item)

lis1 = item.find('title')

lis2 = item.find('price')

print(lis1)

print(lis2)

【執行結果】

harry potter

29.99

learning xml

39.95

harry potter

learning xml

29.99

39.95

可以看到,我們首先匹配的是book節點,然後匹配book節點下的子節點title和price。其實使用find方法匹配的是所有的子孫節點,如果只是單純匹配子節點可以使用children方法。

(2)匹配父節點

使用parent()方法,如果是要匹配祖先節點,則需要使用parents()方法。

(3)匹配兄弟節點

可以使用siblings()方法。

對於獲取到的內容如果是單個節點,則可以直接轉換為字串型別,而對於獲取到多個節點,因其型別為pyquery型別,需要對獲取到的資料進行遍歷,這是需要呼叫items()方法。

from pyquery import pyquery as pq

doc = pq(filename = 'test02.html')

items = doc('title').items()

print(items)

print(ty程式設計客棧pe(items))

for i in items:

print(type(i))

print(i)

【執行結果】

harry potter

learning xml

(1)獲取屬性

使用attr()方法

from pyquery import pyquery as pq

doc = pq(filename = 'test02.html')

items = doc('title')

for i in ite程式設計客棧ms.items():

print(i.attr('lang'))

【執行結果】

engeng遍歷獲取到的資料,就能獲得所有title節點的land屬性值。

(2)獲取文字

使用text()方法

from pyquery import pyquery as pq

doc = pq(filename = 'test02.html')

items = doc('title')

for i in items.items():

print(i.text())

【執行結果】

harry potter

learning xml

同樣是遍歷,獲取到每乙個title節點的文字值。

(1)為某個節點新增或刪除乙個class

呼叫的方法為addclass和removeclass

from pyquery import pyquery as pq

doc = pq(filename = 'test02.html')

items = doc('title')

for i in items.items():

print(i)

i.addclass('book01')

print(i)

i.removeclass('book01')

print(i)

【執行結果】

harry potter

harry potter

harry potter

learning xml

learning xml

learning xml可以看到,首先是列印最初始的title節點,加上class屬性後再次列印,去掉class屬性後再次列印。

(2)attr、text、html

attr:用來改變屬性值;

text:用來改變文字值;

html:用來改變節點值;

(3)remove

移除不需要的節點值,將整個節點移除。

支援多種偽類選擇器,例如選擇第乙個節點、最後乙個節點、奇數節點、偶數節點、以及包含指定文字的節點等。

Python 網路爬蟲之BeautifulSoup

在上一節記錄了如何使用urllib進行網路爬蟲,並將資料儲存。但是我當時是使用的正規表示式進行的資料過濾,有些不全面。接下來我將記錄一種更加方便的解析資料的操作 beautifulsoup 安裝beautifulsoup4 導包import urllib.request from bs4 impor...

Python之網路爬蟲(1)

將 中所有的出版社資訊都爬取出來。如下 可以看到,網頁中有許多的出版社。下面我們用 將所有出版社的名字爬取出來,並儲存在檔案中。import urllib.request import re url data urllib.request.urlopen url read data data.dec...

Python之網路爬蟲(4)

使用 伺服器進行資訊爬取,可以很好的解決ip限制的問題。import urllib.request def use proxy url,proxy addr proxy urllib.request.proxyhandler 由於urllib.request.urlopen不支援很多高階網頁,因此使...