關於爬蟲,你需要知道的BeautifulSoup(二)

日拱一卒|數據挖掘015

閱讀本文前建議先瀏覽:

關於爬蟲,你需要知道的BeautifulSoup(一)

本篇推送涉及的代碼鏈接:

二、使用BeautifulSoup

(二)遍歷文檔樹

遍歷文檔樹,即從根節點 html 標籤開始遍歷,直到找到目標元素爲止,遍歷的一個缺陷是,如果你要找的內容在文檔的末尾,那麼它要遍歷整個文檔才能找到它,速度上就慢了。因此還需要配合第二種方法:搜索文檔樹。

以下面HTML文本爲例


獲取標籤節點可以直接通過 .標籤名方式獲得

1.下行遍歷

2.上行遍歷

遍歷所有先輩節點,包括soup本身,所以要區別判斷

3.平行遍歷

遍歷文檔樹的另一個缺點是隻能獲取到與之匹配的第一個子節點,例如,如果有兩個相鄰的 p 標籤時,第二個標籤就沒法通過.p的方式獲取,這是需要借用 next_sibling 屬性獲取相鄰的節點。

需要注意:平行遍歷發生在同一個父節點下的各節點間

小結

(三)搜索文檔樹

搜索文檔樹是通過指定標籤名來搜索元素,還可以通過指定標籤的屬性值來精確定位某個節點元素,最常用的兩個方法就是 find 和 find_all。


find 方法跟 find_all 類似,唯一不同的地方是,它返回的單個 Tag 對象而非列表,如果沒找到匹配的節點則返回 None。如果匹配多個 Tag,只返回第0個。

注意:

find 和 find_all。這兩個方法在 BeatifulSoup 和 Tag 對象上都可以被調用。

補充:獲取標籤裏面內容

獲取標籤裏面內容,除了可以使用 .string 之外,還可以使用 get_text 方法,不同的地方在於前者返回的一個 NavigableString 對象,後者返回的是 unicode 類型的字符串。實際場景中我們一般使用 get_text 方法獲取標籤中的內容。

參考資料:
1.Python爬蟲知識點梳理
2.HTML文本解析庫BeautifulSoup
3.Python網絡爬蟲與信息提取

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章