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