BeautifulSoup庫
一.BeautifulSoup庫的下載以及使用
1.下載
pip3 install beautifulsoup4
2.使用
improt bs4
二.BeautifulSoup庫解析器
解析器 | 使用方法 | 優勢 | 劣勢 |
---|---|---|---|
bs4的HTML解析器 | BeautifulSoup(mk,'html.parser') | Python 的內置標准庫 執行速度適中 文檔容錯能力強 |
Python 2.7.3 or 3.2.2)前 的版本中文檔容錯能力差 |
lxml的HTML解析器 | BeautifulSoup(mk,'lxml') | 速度快 文檔容錯能力強 |
需要安裝C語言庫 |
lxml的XML解析器 | BeautifulSoup(mk,'xml') | 速度快 唯一支持XML的解析器 |
需要安裝C語言庫 |
html5lib解析器 | BeautifulSoup(mk,'html5lib') | 最好的容錯性 以瀏覽器的方式解析文檔 生成HTML5格式的文檔 |
速度慢 |
條件 :
-
bs4的HTML解析器:安裝bs4庫
-
lxml的HTML解析器:pip3 install lxml
-
lxml的XML解析器:pip3 install lxml
-
html5lib解析器:pip3 install html5lib
三.BeautifulSoup類的5種元素
基本元素 | 簡單說明 | 詳細說明 |
---|---|---|
tag | 標簽 | 分別用<>與</>來表示開頭和結尾 |
name | 標簽的名字 | 用法:<tag>.name輸出為字符串的形式 |
attributes | 標簽里的屬性 | 用法:<tag>.attrs輸出為字典的形式 |
navigablestring | 標簽里的內容 | 用法:<tag>.string可以跨域多個標簽層次 |
comment | 標簽里面的注釋 | 一種特殊的comment類型 |
- 獲取標簽方法,解析后的網頁.標簽的名字,如果
同時存在多個標簽只取第一個
- 獲取標簽的父標簽<tag>.parent
- <tag>表示標簽
- 當標簽為沒有屬性的時候,我們獲得的是個空字典
四.標簽樹向下遍歷
- .contens:子節點列表,不僅僅包括標簽節點,也包括字符串節點例如\n
- .children:子節點的迭代器類型也包括字符串節點例如\n
- descendants:子孫節點的迭代類型也包括字符串節點例如\n
五.標簽樹向上遍歷
- .parent:節點的父親標簽
- .parents:節點先輩標簽的迭代器類型
注意:如果是html的父標簽就是他自己,soup本身也是種特殊的標簽的他的父標簽是空
六.標簽樹平行遍歷
- .next_sibling:下一個平行標簽
- .previous_sibling:上一個平行標簽
- .next_silbings:迭代器類型,向下所有標簽
- .previous_silbling:迭代器類型,向上所有標簽
注意:必須在同一個父節點下才有平行關系,平行遍歷獲得的對象不一定是標簽,也可能是文本,如果上下沒來就為空
七.prettify使得解析后頁面更加好看
解析后的頁面
prettify():會把解析的網頁加上\n的文本文檔,能使它打印變得更加好看