爬蟲神器之 PyQuery 實用教程(一)
咪哥雜談

本篇閱讀時間約為 4 分鐘。接下來的教程,短小而精悍。
1
前言
最近在研究 PySpider 框架,一個國人寫的好用框架,其中在提取網(wǎng)頁節(jié)點元素的時候,可以利用 PyQuery 來高效使用。
今天就來的介紹下關(guān)于 PyQuery 的一些實用方法。
2
安裝及詳情介紹
開始之前,先要安裝下第三方庫。
pip install pyquery來看下官方定義:
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 文檔結(jié)構(gòu)去進(jìn)行 jQuery 的語法查詢。它的 api 使用方法與 jQuery 相似度很高。
看完官網(wǎng)后,再結(jié)合名字,但凡是接觸過前端的同學(xué),一定可以聯(lián)想到j(luò)Query,這里在普及下 jQuery。
jQuery是一個快速、簡潔的JavaScript框架。它的本身語法可以非常簡潔的提取到 HTML 元素的節(jié)點。
而?PyQuery 則是 Python 仿照 jQuery 來實現(xiàn)的。熟悉 jQuery 的同學(xué),再去學(xué)習(xí) PyQuery 簡直 so easy。
3
實戰(zhàn)環(huán)境準(zhǔn)備
廢話不多說,直接開始搞實戰(zhàn)。
剛經(jīng)歷七天小長假,就以"窮游網(wǎng)"為例,來用它講解下 PyQuery 如何獲取頁面的元素節(jié)點。
打開窮游網(wǎng),隨便選了個地點,以"日本"為例。
https://place.qyer.com/japan/citylist-0-0-1/
窮游網(wǎng)

可以看到上圖中,列出了日本全部城市以及區(qū)域。爬它!
4
PyQuery獲取原網(wǎng)頁代碼
PyQuery 內(nèi)置提供了一個方法,可以直接對網(wǎng)頁進(jìn)行模擬請求。
from pyquery import PyQuery as pqdoc?=?pq(url='https://place.qyer.com/japan/citylist-0-0-1/')
?
導(dǎo)入 PyQuery 并且命名為 pq。為了命名簡短,所以調(diào)用使用 pq 來操作。當(dāng)參數(shù)指定為 url 時,pq 底層封裝了請求網(wǎng)址的動作。
doc?=?pq(url='https://place.qyer.com/japan/citylist-0-0-1/')上述代碼的底層執(zhí)行機制,類似于這樣:
url = 'https://place.qyer.com/japan/citylist-0-0-1/'doc = pq(requests.get(url).text)
讓我們來改寫代碼打印下,看看 doc 得到的內(nèi)容,以及它的類型是什么:
from pyquery import PyQuery as pqdef spider_travel():doc = pq(url='https://place.qyer.com/japan/citylist-0-0-1/')print(doc)print(type(doc))spider_travel()
結(jié)果:


doc打印的結(jié)果,大家可以看到,是將 HTML 源代碼以文本的形式返回了。而 doc 的類型,則是?PyQuery?。
后續(xù)想從 HTML 源碼中提取我們想要的內(nèi)容,都需要此類來進(jìn)行操作。也就是通過 doc 變量來進(jìn)行操作,提取。
5
總結(jié)
好了,簡單的回顧下。
上面介紹了 PyQuery 庫的用途以及如何對一個網(wǎng)站發(fā)起請求,以及它最重要的類。下一篇重點介紹如何提取元素節(jié)點。
本篇文章就到這里!是不是很簡短。畢竟現(xiàn)在大家閱讀的時間越來越少了,而真正能看進(jìn)去文章的也越來越少。所以將長篇大論的文章,分隔縮短,分成好幾篇來介紹!你覺得這樣是否合適呢?
Python玩轉(zhuǎn)高德地圖API(一)
你點的每個在看,我都認(rèn)真當(dāng)成了喜歡