上一篇(
跳轉任意門)我們通過requests將豆瓣電影top250的網頁內容都爬取下來了,但是爬取的是整個網頁內容,我們需要對這些內容進行分析,只將我們需要的內容保存下來,不需要的就直接丟棄。
那在這呢,給大家介紹另外一個第三方庫Beautiful Soup,這裡是它的中文介紹:
https://www.crummy.com/software/BeautifulSoup/bs3/documentation.zh.html
可以大概看一下它的介紹:Beautiful Soup 是用Python寫的一個HTML/XML的解析器,它可以很好的處理不規範標記並生成剖析樹(parse tree)。它提供簡單又常用的導航(navigating),搜索以及修改剖析樹的操作。它可以大大節省你的編程時間。
那在這呢,咱們大概分析一下我們怎麼對頁面進行分析截取。
1.BeautifulSoup是基於標籤的,所以我們第一步要準確定位到我們需要信息所在的標籤。
2 .從定位的標籤中提取我們需要的信息(一般在屬性或者在string中)
3. 對於提取數據的簡單處理
那我們照著上面的流程,對我們需要實現的程序進行分析
1. 需要準確定位到我們需要信息的標籤,在這裡,如果能有UI自動化基礎,那就會更好理解一些,我們將標題所在的css selector拷貝出來
#content > div > div.article > ol > li:nth-child(1) > div > div.info > div.hd > a > span:nth-child(1)
2. 確認需要的信息在text屬性裡
那我們來簡單的實現一下(test3.py):
根據打印出來的信息,我們已經可以看到,第一條信息被我們截取出來了
我們以標題為例,再來看看每一頁不同信息之間的區別
第一條:#content > div > div.article > ol > li:nth-child(1) > div > div.info > div.hd > a > span:nth-child(1)
第二條:#content > div > div.article > ol > li:nth-child(2) > div > div.info > div.hd > a > span:nth-child(1)
第三條:#content > div > div.article > ol > li:nth-child(3) > div > div.info > div.hd > a > span:nth-child(1)
可以看出來,除了標紅的地方不一致之外,其他的內容一毛一樣,那我們可以做以下處理(test4.py):
根據打印信息,可以看到,當前單獨頁面的處理已經輸出出來了
現在單獨頁面處理已經完成,接下來我們結合一下上一步的不同請求操作,和上面的頁面處理,將所有的頁面都來處理一下,參考以下代碼(test5.py):
根據輸出信息,可以看到top250的信息。到這裡,其實我們的爬蟲已經可以工作了。
現在,大家已經可以將豆瓣電影 top250的內容爬取下來,並提取出需要的信息,可是現在我們能看到信息並沒有辦法持續存儲,每次需要的時候都得重新爬取。那在這呢,我們來試著將爬取出來的信息保存到本地。
那在這呢,我們需要藉助文檔寫入來對當前內容進行保存,對文檔寫入的話,我們需要藉助open函數來寫入。
先對之前爬取出來的內容進行一下分析:
第1條信息
標題為:肖申克的救贖
評分為:9.7
標題為:希望讓人自由。
第2條信息
標題為:霸王別姬
評分為:9.6
標題為:風華絕代。
第3條信息
標題為:阿甘正傳
評分為:9.5
標題為:一部美國近現代史。
第4條信息
標題為:這個殺手不太冷
評分為:9.4
標題為:怪蜀黍和小蘿莉不得不說的故事。
我們可以看出來,每一條信息都是比較規整的,那我們可以將這些數據存儲成csv文件。
那在這裡就需要將之前的代碼進行一下小改動(testspider.py)
運行代碼之後,可以看到當前目錄下生成了一個豆瓣電影250.csv的文件,在這裡要稍微注意 一下,如果直接使用excel打開當前這個csv文件,會出現亂碼:
我們可以使用記事本打開之後,另存為 – 選擇編碼為“ANSI”:再次用excel打開,就可以看到內容了
到這裡,我們的Python 爬蟲實戰入門就告一段落,希望大家學習愉快。
本文所有代碼都可以在github上下載,鏈接地址為:
https://github.com/chrisblue0605/testspider_for_py.git
作 者:Testfan Chris
出 處:微信公眾號:自動化軟件測試平臺
閱讀更多 安然—Testfan 的文章