個人比較推薦scrapy,這個實現是太方便了,接觸後感覺-這框架太神了,都不用怎麼寫代碼,一個爬蟲就寫成了。下面分享一下我自己的使用過程。

最近看到詩詞想爬取,正好前段時間有學習scrapy,想那就結合scrapy做一個爬蟲吧。想著就動手了,首先選擇的目標網站是詩詞名句網。個人比較喜歡辛棄疾,就以辛棄疾的詩詞為爬取對象。

設定起始網站,做為爬蟲的種子鏈接-http://www.shicimingju.com/chaxun/zuozhe/44.html

爬蟲需要種子鏈接,找到辛棄疾的詩詞列表開始頁面,作為種子鏈接,即爬蟲開始的爬取的頁面。

爬蟲代碼的編寫,這也是我們的核心,因為scrapy框架提供給我們的關注點也是在這裡,scrapy讓我們更加關注業務邏輯的本身

觀察頁面,可以看到頁面通過下一頁一步一步地翻頁,羅列所有的詩詞,在每個列表項中,可以通過具體的鏈接到達詩詞的詳情頁面,裡面記錄了詩詞的詳細內容。根據這樣的邏輯,我們可以如下寫爬蟲的代碼。

當然,我們也需要將爬取的結果存儲到伺服器中,在這裡我選擇的是Mongodb,這部分也挺方便的,簡單的寫一個類,就可以實現數據寫入到Mongodb中。

以上,個人使用scrapy爬取詩詞網站中辛棄疾詩詞的過程,羅列了核心的代碼,整體上看,代碼量真的很少,1百多行的代碼就夠了。所以,個人還是比較偏向於scrapys框架,讓我們更多地關注業務本身。

首先說下區別 scrapy框架是一個完整的爬蟲框架,內部使用twisted來實現大量HTTP請求的非同步,並支持xpath數據解析。雖然功能強大,但是學習曲線略微偏高。requests庫是簡單的HTTP請求庫,上手很快,但是要配合bs4進行數據解析。而requests要實現非同步請求,還要配合gevent庫或者是python的協程。這些都需要自己組合,拼裝。 總的來說,簡單的爬蟲用requests+bs4可以玩。如果是大量爬蟲,要精細化設計的話,還是用scrapy較好。


推薦閱讀:
相關文章