好了,又是學習的時光啦,今天學習pyquery 來進行網頁解析html
常規導入模塊(PyQuery庫中的pyquery類)
from pyquery import PyQuery as pqpython
一般使用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選擇器方法url
id 使用的是# class 使用的是英文句號 空格表明 層級關係
調試
此時咱們先使用語句來獲取頁面中的全部<h4>
的元素
doc = pq(url='https://www.qidian.com/free/all')
a = doc('h4').items()
for i in a:
print(i)code
迭代出所篩選出來的結果
htm
但也會遇到上面的狀況,共同是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出表達式!!!