【网络爬虫入门04】彻底掌握BeautifulSoup的CSS选择器
【網(wǎng)絡(luò)爬蟲入門04】徹底掌握BeautifulSoup的CSS選擇器
廣東職業(yè)技術(shù)學(xué)院 ?歐浩源 2017-10-21
1、引言
? ? 目前,除了官方文檔之外,市面上及網(wǎng)絡(luò)詳細(xì)介紹BeautifulSoup使用的技術(shù)書籍和博客軟文并不多,而在這僅有的資料中介紹CSS選擇器的少之又少。在網(wǎng)絡(luò)爬蟲的頁(yè)面解析中,CCS選擇器實(shí)際上是一把效率甚高的利器。雖然資料不多,但官方文檔卻十分詳細(xì),然而美中不足的是需要一定的基礎(chǔ)才能看懂,而且沒有小而精的演示實(shí)例。不過,在本文中,你可以看到......絕對(duì)的干活!
2、CSS選擇器概述
? ? BeautifulSoup支持大部分的CSS選擇器。
? ? 語(yǔ)法為:向tag對(duì)象或BeautifulSoup對(duì)象的.select()方法中傳入字符串參數(shù),選擇的結(jié)果以列表形式返回,即返回類型為list。
? ? tag.select("string")
? ? BeautifulSoup.select("string")
? ? 注意:在取得含有特定CSS屬性的元素時(shí),標(biāo)簽名不加任何修飾,類名前加點(diǎn),id名前加 #。
3、CSS測(cè)試樣例
4、通過標(biāo)簽查找
例1:選擇所有的title標(biāo)簽。
例2:選擇所有的p標(biāo)簽中的第3個(gè)標(biāo)簽。
例3:選擇body標(biāo)簽下的所有a標(biāo)簽。
例4:選擇body標(biāo)簽下的直接子標(biāo)簽a。
例5:選擇id=link1后的所有兄弟節(jié)點(diǎn)標(biāo)簽。類名前加點(diǎn),id名前加 #。
例6:選擇id=link1后的下一個(gè)兄弟節(jié)點(diǎn)標(biāo)簽。
5、通過CSS類名查找
例7:查找class類名為sister的標(biāo)簽。
例8:查找P標(biāo)簽下class類名為title的標(biāo)簽。
6、通過標(biāo)簽的id屬性查找
例9:選擇id屬性為link2的所有標(biāo)簽。
例10:選擇a標(biāo)簽,其id屬性為link2的標(biāo)簽。
7、同時(shí)用多種CSS選擇器查詢?cè)?/span>
例11:選擇id屬性為link2和id屬性為link3的所有標(biāo)簽。
例12:選擇class屬性為red、id屬性為link2和id屬性為link3的所有標(biāo)簽。
8、通過是否存在某個(gè)屬性來查找
例13:查找a標(biāo)簽下存在herf屬性的標(biāo)簽。
9、通過屬性的值來查找
例14:選擇a標(biāo)簽,其屬性href=http://example.com/lacie的所有標(biāo)簽。
例15:選擇a標(biāo)簽,其href屬性以http開頭的所有標(biāo)簽。
例16:選擇a標(biāo)簽,其href屬性以lie結(jié)尾的所有標(biāo)簽。
例17:選擇a標(biāo)簽,其href屬性包含.com的標(biāo)簽。
10、通過標(biāo)簽逐層查找
例18:首先選中所有的p標(biāo)簽中的第3個(gè)標(biāo)簽,然后在該標(biāo)簽中查找name的屬性值為OHY的標(biāo)簽。
例19:首先選中所有的p標(biāo)簽中的第3個(gè)標(biāo)簽,然后在該標(biāo)簽列表中查找a標(biāo)簽,并將該列表中的第1個(gè)標(biāo)簽的文本取出。
11、返回查找到的元素的第一個(gè)標(biāo)簽
例20:選擇class類名為sister的所有標(biāo)簽中的第一個(gè)。
12、小結(jié)
? ? 如果你想快速的實(shí)現(xiàn)功能更強(qiáng)大的網(wǎng)絡(luò)爬蟲,那么BeautifulSoupCSS選擇器將是你必備的利器之一。BeautifulSoup整合了CSS選擇器的語(yǔ)法和自身方便使用API。在網(wǎng)絡(luò)爬蟲的開發(fā)過程中,對(duì)于熟悉CSS選擇器語(yǔ)法的人,使用CSS選擇器是個(gè)非常方便的方法。
轉(zhuǎn)載于:https://www.cnblogs.com/ALittleBee/p/7702560.html
總結(jié)
以上是生活随笔為你收集整理的【网络爬虫入门04】彻底掌握BeautifulSoup的CSS选择器的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: x264_sps_init
- 下一篇: CSS display属性的值及作用