學習PyQuery庫 好了,又是學習的時光啦,今天學習pyquery 來進行網頁解析 常規導入模塊(PyQuery庫中的pyquery類) from pyquery import PyQuery as pq 通常使用url初始化 doc = pq(url='http://www.baidu.com' ...
學習PyQuery庫
好了,又是學習的時光啦,今天學習pyquery 來進行網頁解析
常規導入模塊(PyQuery庫中的pyquery類)
from pyquery import PyQuery as pq
通常使用url初始化
doc = pq(url='http://www.baidu.com')
文件初始化
doc = pq(filename='demo.html')
基本CSS選擇器的使用,以起點中文網的為例子
doc = pq(url='https://www.qidian.com/free/all')
下麵來獲取小說名字信息
1.打開瀏覽器,進入要分析的網頁
2.F12開發人員調試工具
3.進行元素檢查
4.定位到爬取節點指定位置
5.分析一下 我們自己寫 CSS選擇器方法
id 使用的是# class 使用的是英文句號 空格代表 層級關係
此時我們先使用語句來獲取頁面中的所有<h4>
的元素
doc = pq(url='https://www.qidian.com/free/all')
a = doc('h4').items()
for i in a:
print(i)
迭代出所篩選出來的結果
但也會遇到上面的情況,共同是h4元素的,但篩選到我們不想要的數據。
這時我們可以採用往上級找,直到找到有區別的元素。
doc = pq(url='https://www.qidian.com/free/all')
a = doc('.book-mid-info h4').items()
for i in a:
print(i)
得到了期待的數據!!!(要還是有那前兩個,說明還定位不夠準確,再往上一層走)
我們如果要獲取簡介內容,我們可以下圖方式代碼 獲取子節點(記得find方法是子孫節點)
但上圖也沒抓取我們特別想要的信息呀,這時發現 我們所指定的解析底下有很多li標簽 里標簽底下又有很多內容,所以此時還得繼續往下解析。
首先我們用children方法查找子節點,然後使用items方法來得到一個生成器,將數據遍歷列印或者添加到列表中,方便數據存儲和最終結果列印。
此時我們來獲取一下小說的圖片鏈接試試 利用attrs方法 來返回屬性字典 進一步獲取value值。
怎麼來抓取解析節點 理清層級關係 利用好 F12來分析就好啦!!!
總結一下:
id 使用的是# class 使用的是英文句號 空格代表 層級關係
find()方法是遍歷子孫節點
chlidren()方法是獲取節點的子節點(看上面實例也支持往下繼續選擇節點)
parent()方法是獲取節點的父節點
parents()方法是獲取節點的所有父節點(下麵實例從所有祖先節點中挑選出符合條件的節點)
parent = items.parents('.wrap')
print(parent)
siblings()方法是獲取兄弟節點(下麵實例從所有兄弟節點中挑選出符合條件的節點)
from pyquery import PyQuery as pq
doc = pq(html)
li = doc('.list .item-0.active')
print(li.siblings('.active'))
items()方法是用於遍歷每一個節點結果
attr()方法是返回屬性字典 進一步獲取value值
text()方法是獲取節點內部文本(Tips:當內容中前後出現\n 空格 可配合strip()來刪除)
也可以百度學習下偽類選擇器來獲取節點數據,而且右鍵就能copy出表達式!!!