Python爬蟲速成------bs4庫

BeautifulSoup庫

Beautiful Soup是一個可以從HTML或XML文件中提取數據的Python庫.它能夠通過你喜歡的轉換器實現慣用的文檔導航,查找,修改文檔的方式.Beautiful Soup會幫你節省數小時甚至數天的工作時間.

​                                                                                                               --------選自bs4官方文檔

Beautiful Soup庫是解析、遍歷、維護“標籤樹”的功能庫

BeautifulSoup(r.text, 'html.parser')使用HTML解析器解析r.text

BeautifulSoup類的基本元素

基本元素 說明
Tag 標籤,最基本的信息組織單元,分別用<>和</>標明開頭和結尾
Name 標籤的名字,<p>…</p>的名字是’p’,格式:.name
Attributes 標籤的屬性,字典形式組織,格式:.attrs
NavigableString 標籤內非屬性字符串,<>…</>中字符串,格式:.string
Comment 標籤內字符串的註釋部分,一種特殊的Comment類型

標籤樹的下行遍歷

屬性 說明
.contents 子節點的列表,將所有兒子節點存入列表
.children 子節點的迭代類型,與.contents類似,用於循環遍歷兒子節點
.descendants 子孫節點的迭代類型,包含所有子孫節點,用於循環遍歷

標籤樹的上行遍歷

屬性 說明
.parent 節點的父親標籤
.parents 節點先輩標籤的迭代類型,用於循環遍歷先輩節點

標籤樹的平行遍歷

屬性 說明
.next_sibling 返回按照HTML文本順序的下一個平行節點標籤
.previous_sibling 返回按照HTML文本順序的上一個平行節點標籤
.next_siblings 迭代類型,返回按照HTML文本順序的後續所有平行節點標籤
.previous_siblings 迭代類型,返回按照HTML文本順序的前續所有平行節點標籤

<>.find_all(name, attrs, recursive, string, **kwargs)

  • name : 對標籤名稱的檢索字符串
  • attrs: 對標籤屬性值的檢索字符串,可標註屬性檢索
  • recursive: 是否對子孫全部檢索,默認True
  • string: <>…</>中字符串區域的檢索字符串

<tag>(..)等價於<tag>.find_all(..)

soup(..)等價於soup.find_all(..)

方法 說明
<>.find() 搜索且只返回一個結果,同.find_all()參數
<>.find_parents() 在先輩節點中搜索,返回列表類型,同.find_all()參數
<>.find_parent() 在先輩節點中返回一個結果,同.find()參數
<>.find_next_siblings() 在後續平行節點中搜索,返回列表類型,同.find_all()參數
<>.find_next_sibling() 在後續平行節點中返回一個結果,同.find()參數
<>.find_previous_siblings() 在前序平行節點中搜索,返回列表類型,同.find_all()參數
<>.find_previous_sibling() 在前序平行節點中返回一個結果,同.find()參數

常用的信息標記的三種形式:XML,JSON,YAML

XML實例

<person>
    <firstName>Tian</firstName>
    <lastName>Song</lastName>
    <address>
        <streetAddr>中關村南大街5號</streetAddr>
        <city>北京市</city>
        <zipcode>100081</zipcode>
    </address>
    <prof>Computer System</prof><prof>Security</prof>
</person>

JSON實例

{
    “firstName” : “Tian” ,
    “lastName” : “Song” ,
	“address” : {
        “streetAddr” : “中關村南大街5號” ,
		“city” : “北京市” ,
		“zipcode” :100081} ,
	“prof” : [ “Computer System” , “Security” ]
}

YAML

firstName: Tian
lastName: Song
address:
  streetAddr: 中關村南大街5號
  city: 北京市
  zipcode: 100081
prof:
  ‐Computer System
  ‐Security

三種格式的對比

格式 特點 用途
XML 最早的通用信息標記語言,可擴展性好,但繁瑣 Internet上的信息交互與傳遞
JSON 信息有類型,適合程序處理(js),較XML簡潔 移動應用雲端和節點的信息通信,無註釋
YAML 信息無類型,文本信息比例最高,可讀性好 各類系統的配置文件,有註釋易讀
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章