【網絡爬蟲入門04】徹底掌握BeautifulSoup的CSS選擇器
廣東職業技術學院 歐浩源 2017-10-21
1、引言
目前,除了官方文檔之外,市面上及網絡詳細介紹BeautifulSoup使用的技術書籍和博客軟文並不多,而在這僅有的資料中介紹CSS選擇器的少之又少。在網絡爬蟲的頁面解析中,CCS選擇器實際上是一把效率甚高的利器。雖然資料不多,但官方文檔卻十分詳細,然而美中不足的是需要一定的基礎才能看懂,而且沒有小而精的演示實例。不過,在本文中,你可以看到......絕對的干活!
2、CSS選擇器概述
BeautifulSoup支持大部分的CSS選擇器。
語法為:向tag對象或BeautifulSoup對象的.select()方法中傳入字符串參數,選擇的結果以列表形式返回,即返回類型為list。
tag.select("string")
BeautifulSoup.select("string")
注意:在取得含有特定CSS屬性的元素時,標簽名不加任何修飾,類名前加點,id名前加 #。
3、CSS測試樣例
4、通過標簽查找
例1:選擇所有的title標簽。
例2:選擇所有的p標簽中的第3個標簽。
例3:選擇body標簽下的所有a標簽。
例4:選擇body標簽下的直接子標簽a。
例5:選擇id=link1后的所有兄弟節點標簽。類名前加點,id名前加 #。
例6:選擇id=link1后的下一個兄弟節點標簽。
5、通過CSS類名查找
例7:查找class類名為sister的標簽。
例8:查找P標簽下class類名為title的標簽。
6、通過標簽的id屬性查找
例9:選擇id屬性為link2的所有標簽。
例10:選擇a標簽,其id屬性為link2的標簽。
7、同時用多種CSS選擇器查詢元素
例11:選擇id屬性為link2和id屬性為link3的所有標簽。
例12:選擇class屬性為red、id屬性為link2和id屬性為link3的所有標簽。
8、通過是否存在某個屬性來查找
例13:查找a標簽下存在herf屬性的標簽。
9、通過屬性的值來查找
例14:選擇a標簽,其屬性href=http://example.com/lacie的所有標簽。
例15:選擇a標簽,其href屬性以http開頭的所有標簽。
例16:選擇a標簽,其href屬性以lie結尾的所有標簽。
例17:選擇a標簽,其href屬性包含.com的標簽。
10、通過標簽逐層查找
例18:首先選中所有的p標簽中的第3個標簽,然后在該標簽中查找name的屬性值為OHY的標簽。
例19:首先選中所有的p標簽中的第3個標簽,然后在該標簽列表中查找a標簽,並將該列表中的第1個標簽的文本取出。
11、返回查找到的元素的第一個標簽
例20:選擇class類名為sister的所有標簽中的第一個。
12、小結
如果你想快速的實現功能更強大的網絡爬蟲,那么BeautifulSoupCSS選擇器將是你必備的利器之一。BeautifulSoup整合了CSS選擇器的語法和自身方便使用API。在網絡爬蟲的開發過程中,對於熟悉CSS選擇器語法的人,使用CSS選擇器是個非常方便的方法。