日本综合一区二区|亚洲中文天堂综合|日韩欧美自拍一区|男女精品天堂一区|欧美自拍第6页亚洲成人精品一区|亚洲黄色天堂一区二区成人|超碰91偷拍第一页|日韩av夜夜嗨中文字幕|久久蜜综合视频官网|精美人妻一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
以jQuery之名-爬蟲利器PyQuery

很多讀者在學(xué)習(xí)了 Python 之后都想做一些爬蟲程序,去網(wǎng)上采集數(shù)據(jù)或完成一些自動化操作。因此,我們也制作了一套爬蟲實(shí)戰(zhàn)課程,目前正在***的完善中,很快將和各位見面。

10年積累的做網(wǎng)站、網(wǎng)站建設(shè)經(jīng)驗(yàn),可以快速應(yīng)對客戶對網(wǎng)站的新想法和需求。提供各種問題對應(yīng)的解決方案。讓選擇我們的客戶得到更好、更有力的網(wǎng)絡(luò)服務(wù)。我雖然不認(rèn)識你,你也不認(rèn)識我。但先網(wǎng)站設(shè)計(jì)后付款的網(wǎng)站建設(shè)流程,更有張家港免費(fèi)網(wǎng)站建設(shè)讓你可以放心的選擇與我們合作。

等不及的朋友,可以先來看看這個(gè)類似于 bs4 的網(wǎng)頁分析模塊——PyQuery。

如果說到 jQuery,熟悉前端的同學(xué)肯定不陌生,它可以簡單優(yōu)雅地對 html 文件進(jìn)行定位、選擇、移動等操作。而本文的主角 pyquery,支持以 jquery 的方式對 html 進(jìn)行操作。因此非常適合有前端或 js 基礎(chǔ)的同學(xué)使用。

廢話不多說,一邊看文章,一邊打開編輯器,跟著我一探究竟吧。

1. 安裝

安裝過程比較簡單

 
 
 
 
  1. pip install pyquery

2. 入門使用

接下來,我們以分析簡書首頁文章為例,簡單梳理 pyquery 的部分函數(shù) 。

(1)  導(dǎo)入相關(guān)的庫

分別導(dǎo)入 網(wǎng)絡(luò)請求庫 requests、以及 pyquery 。

 
 
 
 
  1. import requests
  2. import pyquery

(2) 向 pyquery 導(dǎo)入數(shù)據(jù)

與 bs4 一樣,處理網(wǎng)頁首先建立一個(gè) pyquery 對象。通過抓取到的網(wǎng)頁內(nèi)容初始化即可。

 
 
 
 
  1. # 請求簡書地址
  2. url = 'http://www.jianshu.com/'
  3. req = requests.get(url)
  4. page = req.text
  5. # 導(dǎo)入 pyquery 處理
  6. pq = pyquery.PyQuery(page)

pyquery 也可以直接調(diào)用內(nèi)置的網(wǎng)絡(luò)請求模塊,從網(wǎng)址初始化:

 
 
 
 
  1. url = 'http://www.baidu.com'
  2. pq = pyquery.PyQuery(urlurl=url)

(3) 定位元素

pyquery 提供多種定位元素的方法,這里簡單介紹三種,直接定位、根據(jù) id 定位 ,根據(jù) class 定位。

根據(jù) html 標(biāo)簽直接定位:

 
 
 
 
  1. # 直接定位 head 標(biāo)簽
  2. pqpq_head = pq('head')

以上代碼就是獲取 html 中 < head>.......< /head> 標(biāo)簽內(nèi)的內(nèi)容。

根據(jù) id 定位:

在簡書首頁源代碼中可找到這么一段

根據(jù) id 定位找到這個(gè) li 標(biāo)簽,代碼如下:

 
 
 
 
  1. # 定位 id = note-11772642 的 li 標(biāo)簽
  2. pqpq_id = pq('#note-11772642')

以上代碼獲取 id 名為 note-11772642 的標(biāo)簽,需要注意的是查詢 id 時(shí)添加 # 前綴,這是 css 選擇器語法。

根據(jù) class 定位:

同樣以剛才的為例

我們根據(jù) class=have-img 去獲取這個(gè) li 標(biāo)簽

 
 
 
 
  1. # 定位 class = have-img 的 li 標(biāo)簽
  2. pqpq_class = pq('.have-img')

注意的是查詢 class 時(shí)添加 . 前綴,這也是 css 選擇器語法。

(4) 索引標(biāo)簽

在上一節(jié)的***有個(gè)小問題,我們知道 head 標(biāo)簽在 html 中只有一個(gè),而 class 名為 have-img 的 li 標(biāo)簽可能有多個(gè),我們該

如何遍歷所有的 li 標(biāo)簽?zāi)? 又該如何單獨(dú)的取某一個(gè) li 呢?

首先我們可以逐個(gè)遍歷

 
 
 
 
  1. # 遍歷所有 class = have-img 的 li 標(biāo)簽
  2. for li in pq_class:    
  3.     # 獲取每一個(gè) li 標(biāo)簽
  4.     pqpq_li = pq(li)

我們可以索引某一個(gè) li 標(biāo)簽

使用.ep(index) 函數(shù)。

 
 
 
 
  1. # 獲取***個(gè) li 標(biāo)簽
  2. li_first = pq_class.ep(0)
  3. # 獲取第二個(gè) li 標(biāo)簽
  4. li_second = pq_class.ep(1)

(5) 尋找標(biāo)簽

同樣回到剛剛的那張圖

在上一步,我們已經(jīng)找到了所有的 li 標(biāo)簽,也知道如何取索引其中的元素,但我們現(xiàn)在要準(zhǔn)確定位到某一個(gè)元素,比如上圖中 id = note-11772642 這個(gè) li 標(biāo)簽。

這時(shí)候 filter(selecter) 就派上了用場

 
 
 
 
  1. li_spec = pq_class.filter('#note-11772642')

這樣我們就找到了指定的這個(gè) li 標(biāo)簽,需要注意的是, filter 函數(shù)只能在同一級標(biāo)簽中尋找,比如在這里只能過濾 li 標(biāo)簽,而不能定位 li 標(biāo)簽下的 a 標(biāo)簽、 div 標(biāo)簽等。

當(dāng)然,針對這種情況, pyquery 為我們提供了另外一個(gè)函數(shù) find(selector),該函數(shù)用于尋找子節(jié)點(diǎn),繼續(xù)以上圖為例,尋找該特定 li 標(biāo)簽下的 p 標(biāo)簽

 
 
 
 
  1. p_tag = li_spec.find('p')

(6) 提取屬性與值

以上我們講了許多關(guān)于標(biāo)簽的知識,現(xiàn)在來談?wù)勗趺传@取標(biāo)簽內(nèi)的屬性和標(biāo)簽包裹的文本,實(shí)際的爬蟲項(xiàng)目中,通常這是最重要的一步,比如從 a 標(biāo)簽中獲取鏈接、從 li 標(biāo)簽或者 p標(biāo)簽中獲取文本。

獲取屬性:

使用 attr() 函數(shù),以我們之前獲取的 li 標(biāo)簽為例,獲取其中的 id 屬性

 
 
 
 
  1. # 獲取 id 屬性的方法
  2. li_specli_spec_id = li_spec.attr('id')
  3. li_specli_spec_id_2 = li_spec.attr.id
  4. li_specli_spec_id_3 = li_spec.attr['id']

獲取文本:

使用 text()函數(shù), 以我們之前得到的 p 標(biāo)簽為例,獲取其中的文本。

 
 
 
 
  1. string = p_tag.text()

到此,在爬蟲中會使用到的函數(shù)就是這些了。

3. 小結(jié)

pyquery 還擁有操作文檔樹的能力,本篇文章著重介紹與爬蟲相關(guān)的知識,所以就不再此詳細(xì)敘述了,有興趣的同學(xué)移步官方文檔:

http://pythonhosted.org/pyquery/index.html

***,既然我們都分析了簡書首頁,請大家根據(jù)所學(xué)內(nèi)容爬取簡書首頁所有的文章標(biāo)題和文章鏈接,然后打印出來吧,像下圖一樣

【本文是專欄機(jī)構(gòu)“Crossin的編程教室”的原創(chuàng)文章,轉(zhuǎn)載請通過微信公眾號(rossincode)聯(lián)系原作者】


新聞標(biāo)題:以jQuery之名-爬蟲利器PyQuery
網(wǎng)站路徑:http://www.dlmjj.cn/article/dpeiige.html