【python爬蟲筆記】網路爬蟲之提取
阿新 • • 發佈:2019-01-07
unit 4 BeautifulSoup庫入門
BeautifulSoup庫是解析、遍歷、維護“標籤樹”的功能庫
…
標籤 tag…
- name(成對出現) attributes(0或多個)
beautifulSoup對應一個html/xml文件的全部內容
beautiful soup庫解析器
解析器 | 使用方法 | 條件 |
---|---|---|
bs4的html解析器 | BeautifulSoup(mk,’html.parser’) | 安裝bs4庫 |
lxml的html解析器 | BeautifulSoup(mk,’lxml’) | pip install lxml |
lxml的xml解析器 | BeautifulSoup(mk,’xml’) | pip install lxml |
html5lib解析器 | BeautifulSoup(mk,’html5lib’) | pip install html5lib |
beautifulSoup類的基本元素
基本元素 | 說明 |
---|---|
Tag | 最基本的資訊組織單元,用<>和標明開頭和結尾 |
Name | …的名字是 p, .name |
Attributes | 字典形式組織,.attrs |
NavigableString | <>…中字串,.string |
Comment | 標籤內字串的註釋部分,一種特殊的Comment型別 |
任何存在於HTML語法中的標籤都可以用soup.訪問獲得。當HTML文件中存在多個相同對應內容時,soup.返回第一個
NavigableString可以跨越多個層次
基於bs4庫的HTML內容遍歷方法
< >…< /> 構成了所屬關係,形成了標籤的樹形結構
標籤樹的下行遍歷
屬性 | 說明 |
---|---|
.contents | 子節點的列表,將所有兒子節點存入列表 |
.children | 子節點的迭代型別,與.content類似,永遠迴圈遍歷兒子節點 |
.descendants | 子孫節點的迭代型別,包含所有子孫節點,用於迴圈遍歷 |
BeautifulSoup型別是標籤樹的根節點
標籤樹的上行遍歷
屬性 | 說明 |
---|---|
.parent | 節點的父標籤 |
.parents | 節點先輩標籤的迭代型別,用於迴圈遍歷先輩節點 |
遍歷所有先輩節點,包括soup本身
標籤樹的平行遍歷
屬性 | 說明 |
---|---|
.next_sibling | 返回按照HTML文字順序的下一個平行節點標籤 |
.previous_sibling | 返回按照HTML文字順序的上一個平行節點標籤 |
.next_sibling | 迭代型別,返回按照HTML文字順序的後續所有平行節點標籤 |
.previous_siblings | 迭代型別,返回按照HTML文字順序的前續所有平行節點標籤 |
平行遍歷發生在同一個父節點下的各個節點間
基於bs4庫的HTML格式輸出
prettify()方法
為HTML文字<>及內容增加‘\n’
可用於標籤,方法:< tag >.prettify()
bs4庫的編碼
bs4庫將任何HTML輸入都變成utf-8編碼
python3預設支援編碼是utf-8, 解析無障礙
Unit5 資訊標記與提取方法
資訊標記的三種形式
XML | 最早的通用資訊標記語言,可擴充套件性好,但繁瑣 | Internet上的資訊互動與傳遞 |
---|---|---|
JSON | 資訊有型別,適合程式處理,較XML簡潔 | 移動應用雲端和節點的資訊通訊,無註釋 |
YAML | 資訊無型別,文字資訊比例最高,可讀性好 | 各類系統的配置檔案,有註釋易讀 |
資訊提取的一般方法
方法一:完整解析資訊的標記形式,再提取關鍵資訊
需要標記解析器,例如:bs4庫的標籤樹遍歷
優點:資訊解析準確
缺點:提取過程繁瑣,速度慢
方法二:無視標記形式,直接搜尋關鍵資訊
對資訊的文字查詢函式即可
優點:提取過程簡潔,速度較快
缺點:提取結果準確性與資訊內容相關
基於bs4庫的HTML內容查詢方法
<>.find_all(name, attrs, recursive, string, **kwargs)
返回一個列表型別,儲存查詢的結果
recursive:是否對子孫全部檢索,預設True
String:<>content< /> 中字串區域的檢索字串
< tag >(..) 等價於 < tag >.find_all(..)
soup(..) 等價於 soup.find_all(..)