通過第一部分的練習(xí),我們已經(jīng)有了一個(gè)可運(yùn)行的爬蟲。這一部分我們詳細(xì)的看看如何使用BeautifulSoup從網(wǎng)頁中提取我們需要的數(shù)據(jù),學(xué)習(xí)的目標(biāo)是能夠使用BeautifulSoup從網(wǎng)頁中提取任意的數(shù)據(jù)。
我們知道我們抓取回來的網(wǎng)頁是由HTML和CSS構(gòu)成,HTML文檔對象模型(DOM)將HTML文檔表達(dá)為樹結(jié)構(gòu)。而提取網(wǎng)頁特定數(shù)據(jù)實(shí)際上就是按照指定的特征匹配文檔樹并讀取數(shù)據(jù)內(nèi)容。
BeautifulSoup支持大部分的CSS選擇器,在tag或BeautifulSoup對象的.select()方法中傳入字符串參數(shù),即可使用CSS選擇器的語法找到tag。以上面的HTML為例,下面分別使用tag,tag+id, tag+class對網(wǎng)頁元素定位:
現(xiàn)在回到我們抓取豆瓣圖書的例子,我們看看怎么使用BeautifulSoup從網(wǎng)頁中提取書名,封面圖片,圖書簡介等,代碼如下。感興趣的讀者可以添加代碼提取更多內(nèi)容。
提取數(shù)據(jù)的關(guān)鍵是分析并確定網(wǎng)頁元素的CSS選擇器。幸運(yùn)的是瀏覽器可以幫我們很大的忙,以Chrome瀏覽器為例,在打開的網(wǎng)頁上對想要提取的數(shù)據(jù)點(diǎn)擊右鍵,在彈出的菜單項(xiàng)中選擇檢查元素。如圖所示我們可以非常方便的得到元素對應(yīng)的CSS選擇器。
好,現(xiàn)在我們把數(shù)據(jù)提取部分代碼加入我們的爬蟲中。再次運(yùn)行程序,圖書書名,圖書封面,簡介信息便被提取和打印出來了。
這一部分里我們詳細(xì)介紹了如何提取網(wǎng)頁數(shù)據(jù)。BeautifulSoup還有許多其它的API可以訪問html的內(nèi)容,細(xì)節(jié)可以參考BeautifulSoup文檔。
聯(lián)系客服