Python爬蟲入門,快速抓取大規模數據(第二部分)

通過 ,我們已經有了一個可運行的爬蟲。這一部分我們詳細的看看如何使用BeautifulSoup從網頁中提取我們需要的數據,學習的目標是能夠使用BeautifulSoup從網頁中提取任意的數據。

HTML文檔和CSS選擇器

我們知道我們抓取回來的網頁是由HTML和CSS構成,HTML文檔對象模型(DOM)將HTML文檔表達為樹結構。而提取網頁特定數據實際上就是按照指定的特徵匹配文檔樹並讀取數據內容。

Python爬蟲入門,快速抓取大規模數據(第二部分)

BeautifulSoup支持大部分的CSS選擇器,在tag或BeautifulSoup對象的.select()方法中傳入字符串參數,即可使用CSS選擇器的語法找到tag。以上面的HTML為例,下面分別使用tag,tag+id, tag+class對網頁元素定位:

Python爬蟲入門,快速抓取大規模數據(第二部分)

爬蟲實例

現在回到我們抓取豆瓣圖書的例子,我們看看怎麼使用BeautifulSoup從網頁中提取書名,封面圖片,圖書簡介等,代碼如下。感興趣的讀者可以添加代碼提取更多內容。

Python爬蟲入門,快速抓取大規模數據(第二部分)

提取數據的關鍵是分析並確定網頁元素的CSS選擇器。幸運的是瀏覽器可以幫我們很大的忙,以Chrome瀏覽器為例,在打開的網頁上對想要提取的數據點擊右鍵,在彈出的菜單項中選擇檢查元素。如圖所示我們可以非常方便的得到元素對應的CSS選擇器。

Python爬蟲入門,快速抓取大規模數據(第二部分)

好,現在我們把數據提取部分代碼加入我們的爬蟲中。再次運行程序,圖書書名,圖書封面,簡介信息便被提取和打印出來了。

Python爬蟲入門,快速抓取大規模數據(第二部分)

總結

這一部分裡我們詳細介紹瞭如何提取網頁數據。BeautifulSoup還有許多其它的API可以訪問html的內容,細節可以參考BeautifulSoup文檔。


分享到:


相關文章: