python | 爬蟲筆記(四)- 解析庫使用

本節內容爲解析庫的使用,內容涵蓋:XPath、BeautifulSoup和PyQuery基礎內容。 html

· 正則表達來提取比較繁瑣。
· 對於網頁的節點來講,它能夠定義 id、class 或其餘的屬性,並且節點之間還具備層次關係,在網頁中能夠經過 XPath 或 CSS 選擇器來定位一個或多個節點,進而提取相關內容或屬性。
· 解析庫包括:LXML、BeautifulSoup、PyQuery

4.1 XPath

XPath,全稱 XML Path Language,即 XML 路徑語言,它是一門在XML文檔中查找信息的語言。XPath 最初設計是用來搜尋XML文檔的,可是它一樣適用於 HTML 文檔的搜索。
· 經常使用規則
//title[@lang=’eng’] #選擇全部名稱爲 title,同時屬性 lang 的值爲 eng 的節點。

4.2 BeautifulSoup

藉助網頁的結構和屬性等特性來解析網頁的工具,能自動轉換編碼

1- 解析器 一般選擇lxml

from bs4 import BeautifulSoup
soup = BeautifulSoup('<p>Hello</p>', 'lxml') #對象初始化
print(soup.p.string) #調用方法解析 

2- 節點選擇器

經過屬性選擇元素
通用格式:
from bs4 import BeautifulSoup
soup = BeautifulSoup(html, 'lxml')
print(soup.title.name)
print(soup.p.attrs) #獲取屬性
print(soup.p.attrs['name'])
print(soup.p.string) #獲取內容
若是返回結果是單個節點,那麼能夠直接調用 string、attrs 等屬性來得到其文本和屬性,若是返回結果是多個節點的生成器,則能夠轉爲列表後取出某個元素,而後再調用 string、attrs 等屬性來獲取其對應節點等文本和屬性。

3- 方法選擇器

經過調用find_all()、find() 等方法,而後傳入相應等參數就能夠靈活地進行查詢了。

#find_all() API find_all(name , attrs , recursive , text , **kwargs)python

4- CSS選擇器

select()方法
 
總結:
推薦使用 LXML 解析庫,必要時使用 html.parser。
節點選擇篩選功能弱可是速度快。
建議使用 find()、find_all() 查詢匹配單個結果或者多個結果。
若是對 CSS 選擇器熟悉的話能夠使用 select() 選擇法。

4.3 PyQuery(待補充)

 

##本系列內容爲《python3爬蟲開發實戰》學習筆記。本系列博客列表以下:工具

(零)學習路線學習

(一)開發環境配置ui

(二)爬蟲基礎編碼

(三)基本庫使用spa

(四)解析庫使用設計

(五)數據存儲code

(六)Ajax數據爬取xml

(七)動態渲染頁面爬取Selenium

持續更新...

對應代碼請見:..

 
相關文章
相關標籤/搜索