日拱一卒|數據挖掘015
閱讀本文前建議先瀏覽:
本篇推送涉及的代碼鏈接:
二、使用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網絡爬蟲與信息提取