Python爬蟲之BeautifulSoup中的CSS選擇器

2021-01-07 一起學python

CSS選擇器

Beautiful Soup還提供了另外一種選擇器,那就是CSS選擇器。如果對Web開發熟悉的話,那麼對CSS選擇器肯定也不陌生,如果不熟悉的話,可以參考W3Cschool中的相關知識。

使用CSS選擇器時,只需要調用select( )方法,傳入相應的CSS選擇器即可,示例如下:

運行結果如下:

這裡我們用了3次CSS選擇器,返回的結果均是符合CSS選擇器的節點組成的列表。例如select('ul li')則是選擇所有ul節點下面的所有li節點,結果便是所有li節點組成的列表。

最後一句列印輸出了列表中元素的類型。可以看到,類型依然是Tag類型。

嵌套選擇

select( )方法同樣支持嵌套選擇。例如,先選擇所有ul節點,再遍歷每個ul節點,選擇其li節點,樣例如下:

運行結果如下:

可以看到,這裡正常輸出了所有ul節點下所有li節點組成的列表。

獲取屬性

我們知道節點類型是Tag類型,所以獲取屬性還可以用原來的方法。仍然是上面的HTML文本,這裡嘗試獲取每個ul節點的id屬性:

運行結果如下:

可以看到,直接傳入中括號和屬性名,以及通過attrs屬性獲取屬性值,都可以成功。

獲取文本

要獲取文本,當然也可以用前面所講string屬性。此外,還有一個方法,那就是get_text( ),示例如下:

運行結果如下:

可以看到二者的效果完全一致。

到此,Beautiful Soup的用法基本就介紹完了,我們來做一下簡單的總結:

推薦使用lxml解析庫,必要時使用html.parser。節點選擇篩選功能弱但是速度快。建議使用find( )或者find_all( )查詢匹配單個結果或者多個結果。如果對CSS選擇器熟悉的話,可以使用select( )方法選擇。使用pyquery

如果你對Web有所涉及,如果你比較喜歡用CSS選擇器,如果你對jQuery有所了解,那麼這裡有一個更適合你的解析庫——pyquery。首先在使用之前,確保我們已經安裝好了pyquery。

初始化像Beautiful Soup一樣,初始化pyquery的時候,也需要傳入HTML文本來初始化一個PyQuery對象。它的初始化方式有多種,比如直接傳入字符串,傳入URL,傳入文件名,等等。下面我們來詳細介紹一下。

字符串初始化首先我們用一個實例來感受一下:

運行結果如下:

這裡首先引入PyQuery這個對象,取別名為pq。然後聲明了一個長HTML字符串,並將其當作參數傳遞給PyQuery類,這樣就成功完成了初始化。接下來,將初始化的對象傳入CSS選擇器。在這個實例中,我們傳入li節點,這樣就可以選擇所有的li節點。

URL初始化初始化的參數不僅可以以字符串的形式傳遞,還可以傳入網頁的URL,此時只需要指定參數為url即可:

運行結果如下:

這樣的話,pyQuery對象會首先請求這個URL,然後用得到的HTML內容完成初始化,這其實就相當於用網頁的原始碼以字符串的形式傳遞給PyQuery類來初始化。

它與下面的功能是相同的:

文件初始化當然,除了傳遞URL,還可以傳遞本地的文件名,此時將參數指定為filename即可:

當然這裡需要有一個本地HTML文件test.html,其內容是待解析的HTML字符串。這樣它會首先讀取本地的文件內容,然後用文件內容以字符串的形式傳遞給PyQuery類來初始化。

以上三種初始化方式均可,當然最常用的初始化方式還是以字符串形式傳遞。

相關焦點

  • Python爬蟲從入門到精通(3): BeautifulSoup用法總結及多線程爬蟲爬取糗事百科
    安裝和使用只需要使用如下兩個命令:pip install beautifulsoup4from bs4 import BeautifulSoup我們還建議你安裝lxml HTML解析庫,比python自帶的解析庫html.parser更快。
  • python爬蟲常用庫之BeautifulSoup詳解
    還有很多類似的方法,用法都差不多,就不再一一演示了,需要的可以去官網查看5)select()方法這個方法是使用css選擇器來進行篩選標籤的。css選擇器:就是根據標籤的名字,id和class屬性來選擇標籤。
  • 「小白學爬蟲連載(5)」——Beautiful Soup庫詳解
    Beautiful Soup安裝與測試對於Windows平臺:首先介紹一種簡單的安裝包的方法,打開cmd,執行pip installbeautifulsoup4,這裡千萬不要忘記最後的數字4。如果第一種方法出現如timeout等問題,我們還可以採用手動方法安裝,步驟如下:登陸該網站(https://www.lfd.uci.edu/~gohlke/pythonlibs/)下載你所需要的第三包的whl文件(用Ctrl+F命令搜索你想安裝的第三方包),建議存儲在Python安裝目錄中的\Lib\site-packages目錄下。
  • Python爬蟲html解析,還在用BeautifulSoup嗎?試試PyQuery吧
    在初學python時,大家都喜歡寫些小腳本來爬些網頁,因為這能在最短的時間讓我們達到一種小小的滿足感,通常我們解析網頁時有幾種方法:正則表達式匹配 - 比較低級用beautifulsoup、pyquery等包解析用scrapy、pyspider等框架來解析其實,方法
  • 想入門 Python 爬蟲?那麼 Beautiful Soup 是你必須要學習的
    過濾器的類型:字符串正則表達式列表True方法字符串:查找文檔中所有的標籤soup.find_all('b')正則表達式:找出所有以b開頭的標籤import refor tag in soup.find_all(re.compile("^b")): print(tag.name)
  • 5分鐘快速學習掌握python爬蟲Beautifulsoup解析網頁
    python爬蟲用Beatifulsoup庫解析網頁提取所需元素新手看懂個人觀點:之前我們有講過爬蟲和網頁的一些聯繫,網頁的一些組成部分,爬蟲就是對網頁裡面的數據進行提取然後對其進行數據處理,篩選出所需部分,供需要者使用。
  • Python爬蟲教學(寫給入門的新手)
    前言剛學完python基礎,想學習爬蟲的新手,這裡有你想要的東西。
  • 爬蟲系列 | 6、詳解爬蟲中BeautifulSoup4的用法
    Beautiful Soup 已成為和 lxml、html6lib 一樣出色的 python 解釋器,為用戶靈活地提供不同的解析策略或強勁的速度。'])# 方法二(class為python中關鍵字,因此查找html中的class屬性需要添加個下劃線 class_)result1 = soup.find('div', class_='test')print(result1.a['href'])# 方法三result2 = soup.find('div', attrs={'class': '
  • Requests的好基友BeautifulSoup4
    為什麼說是好基友呢,因為python爬蟲入門就要學bs4, 他是一個解析html的庫,非常好用.requests請求 bs4解析妥妥的.1.我們來看一下基本使用苦逼的博主沒有人給充值,想拿廣告當測試頁面有沒有,所以我們就拿北京居住證辦理平臺當測試頁面吧.測試頁面是張這個樣子的:
  • 技術分享|利用Python和BeautifulSoup進行網頁爬取(新手教程)
    使用Python與BeautifulSoup可以很容易的進行網頁爬取,通過網站爬蟲獲取信息可以幫助企業或個人節省很多的時間和金錢。學習本文之後,我相信大部分新手都能根據自己的需求來開發出相應的網頁爬蟲。
  • Python爬蟲基礎教學(寫給入門的新手)
    前言剛學完python基礎,想學習爬蟲的新手,這裡有你想要的東西。本文著重點在於教新手如何學習爬蟲,並且會以外行人的思維進行形象地講解。最近我一兄弟想學,我就想寫個教學給他,然後想不如分享到網絡上,給熱愛學習的人們一起學習探討。
  • Python爬蟲常用四種定位元素方法,收藏備用!
    初學Python時,大家最喜歡做的事可能就是爬蟲吧!使用爬蟲採集數據時,如何從請求到的網頁中提取數據?如何定位數據?來學習一下幾種 Python 爬蟲常用的定位網頁元素的方法「基於 BeautifulSoup 的 CSS 選擇器(與 PyQuery 類似)」今天來爬一爬當當網圖書暢銷總榜:
  • python程序媛BeautifulSoup快速入門
    爬蟲最常用就是要在response回的html文件中獲取我們想要的資源,而常用方法除了正則就是BeautifulSoup庫了。其實,媛媛本人呢,是習慣使用正則的,不過經常聽到很多同學表示正則太複雜,想要使用BeautifulSoup庫,今天呢,就滿足大家,帶著大家超級簡單案例,快速入門。
  • [Python從零到壹] 五.網絡爬蟲之BeautifulSoup基礎語法萬字詳解
    所有文章都將結合案例、代碼和作者的經驗講解,真心想把自己近十年的編程經驗分享給大家,希望對您有所幫助,文章中不足之處也請海涵。Python系列整體框架包括基礎語法10篇、網絡爬蟲30篇、可視化分析10篇、機器學習20篇、大數據分析20篇、圖像識別30篇、人工智慧40篇、Python安全20篇、其他技巧10篇。
  • Python無頭爬蟲Selenium系列(01):像手工一樣操作瀏覽器
    轉發本文並私信我"python",即可獲得Python資料以及更多系列文章(持續更新的)作為"數據玩家",如果手頭上沒有數據怎麼辦?當然是用代碼讓程序自動化採集數據,但是現在"爬蟲"不是那麼容易,其中最困難的即是突破網站各種反爬機制。
  • Python爬蟲實戰教程——爬取xkcd漫畫
    網絡爬蟲(又被稱為網頁蜘蛛,網絡機器人),是一種按照一定的規則,自動地抓取網絡信息的程序或者腳本。詳細學習HTML:菜鳥教程runoob在example.html中,「<!「<head></head>」中包含網頁的基本信息,如網頁標題(顯示在瀏覽器標題欄)、編碼、作者、描述等。「<body></body>」中包含的內容將展示在瀏覽器中。標籤有屬性。如src、href等。
  • Python3中BeautifulSoup的使用方法
    所以,這一節我們就介紹一個強大的解析工具,叫做BeautiSoup,它就是藉助網頁的結構和屬性等特性來解析網頁的工具,有了它我們不用再去寫一些複雜的正則,只需要簡單的幾條語句就可以完成網頁中某個元素的提取。廢話不多說,接下來我們就來感受一下BeautifulSoup的強大之處吧。
  • [Python從零到壹] 六.網絡爬蟲之BeautifulSoup爬取豆瓣TOP250電影詳解
    所有文章都將結合案例、代碼和作者的經驗講解,真心想把自己近十年的編程經驗分享給大家,希望對您有所幫助,文章中不足之處也請海涵。Python系列整體框架包括基礎語法10篇、網絡爬蟲30篇、可視化分析10篇、機器學習20篇、大數據分析20篇、圖像識別30篇、人工智慧40篇、Python安全20篇、其他技巧10篇。
  • 四種Python爬蟲常用的定位元素方法對比,你偏愛哪一款?
    在使用Python本爬蟲採集數據時,一個很重要的操作就是如何從請求到的網頁中提取數據,而正確定位想要的數據又是第一步操作。本文將對比幾種 Python 爬蟲中比較常用的定位網頁元素的方式供大家學習。基於 BeautifulSoup 的 CSS 選擇器這種方法實際上就是 PyQuery 中 CSS 選擇器在其他模塊的遷移使用,用法是類似的。
  • 爬蟲入門到放棄01:什麼是爬蟲
    序章18年初,還在實習期的我因為工作需求開始接觸Java爬蟲,從一個網站爬取了163W條poi數據,這是我人生中寫的第一個爬蟲,也是唯一的一個Java爬蟲。後來這些poi數據也成了我畢業設計中的一部分。