爬蟲神器之 PyQuery 實用教程(一)

前言

今年 5 月份的時候,後臺有小夥伴留言,詢問過 PyQuery 的用法,當時沒怎麼接觸過 PyQuery ,只是大致看了下官方文檔,瞭解到它與我們常用的 BeautifulSoup 庫相似。也是作為提取網頁源代碼的一款好用 Python 模塊。

最近在研究 PySpider 框架,一個國人寫的好用框架,其中在提取網頁節點元素的時候,可以利用 PyQuery 來高效使用。

今天就來的介紹下關於 PyQuery 的一些實用方法。

安裝及詳情介紹

開始之前,先要安裝下第三方庫。

<code>pip install pyquery/<code>

來看下官方定義:

pyquery allows you to make jquery queries on xml documents. The API is as much as possible the similar to jquery. pyquery uses lxml for fast xml and html manipulation.
PyQuery官方文檔

大致意思:PyQuery 允許你在 xml 文檔結構去進行 jQuery 的語法查詢。它的 api 使用方法與 jQuery 相似度很高。

看完官網後,再結合名字,但凡是接觸過前端的同學,一定可以聯想到jQuery,這裡在普及下 jQuery。

jQuery是一個快速、簡潔的JavaScript框架。它的本身語法可以非常簡潔的提取到 HTML 元素的節點。

而 PyQuery 則是 Python 仿照 jQuery 來實現的。熟悉 jQuery 的同學,再去學習 PyQuery 簡直 so easy。

實戰環境準備

廢話不多說,直接開始搞實戰。

剛經歷七天小長假,就以"窮遊網"為例,來用它講解下 PyQuery 如何獲取頁面的元素節點。

打開窮遊網,隨便選了個地點,以"日本"為例。

https://place.qyer.com/japan/citylist-0-0-1/
窮遊網


爬蟲神器之 PyQuery 實用教程(一)


可以看到上圖中,列出了日本全部城市以及區域。爬它!

PyQuery獲取原網頁代碼

PyQuery 內置提供了一個方法,可以直接對網頁進行模擬請求。

<code>from pyquery import PyQuery as pq
doc = pq(url='https://place.qyer.com/japan/citylist-0-0-1/')/<code>

導入 PyQuery 並且命名為 pq。為了命名簡短,所以調用使用 pq 來操作。當參數指定為 url 時,pq 底層封裝了請求網址的動作。

<code>doc = pq(url='https://place.qyer.com/japan/citylist-0-0-1/')/<code>

上述代碼的底層執行機制,類似於這樣:

<code>url = 'https://place.qyer.com/japan/citylist-0-0-1/'
doc = pq(requests.get(url).text)/<code>

讓我們來改寫代碼打印下,看看 doc 得到的內容,以及它的類型是什麼:

<code>from pyquery import PyQuery as pq
def spider_travel():
doc = pq(url='https://place.qyer.com/japan/citylist-0-0-1/')
print(doc)
print(type(doc))
spider_travel()/<code>

結果:


爬蟲神器之 PyQuery 實用教程(一)


爬蟲神器之 PyQuery 實用教程(一)


doc打印的結果,大家可以看到,是將 HTML 源代碼以文本的形式返回了。而 doc 的類型,則是 PyQuery 。

後續想從 HTML 源碼中提取我們想要的內容,都需要此類來進行操作。也就是通過 doc 變量來進行操作,提取。

總結

好了,簡單的回顧下。

上面介紹了 PyQuery 庫的用途以及如何對一個網站發起請求,以及它最重要的類。下一篇重點介紹如何提取元素節點。


分享到:


相關文章: