Python scrapy基礎教程(二)

HuangZhang_123發表於2017-04-11

歡迎加入學習交流QQ群:657341423


爬取一般網站常用的spider。其定義了一些規則(rule)來提供跟進link的方便的機制。 也許該spider並不是完全適合您的特定網站或專案。因此您可以以其為起點,根據需求修改部分方法。當然您也可以實現自己的spider。
也就是說spider是根據spider裡面的start_urls的url進行爬蟲的。但有時候我們爬取的url是帶有引數,或者需要登入了網站才能爬取資料的時候,這時候spider雖然能做到,但顯得有點乏力。
spider做法:直接看官方文件
這裡寫圖片描述

for url in response.xpath('//a/@href').extract():
    yield scrapy.Request(url, callback=self.parse)

實現方法就是通過start_urls獲取全部連結,然後用迴圈實現,但是遇到不同的連結,網頁內容肯定不一樣的,這時候就要做很多的判斷。這樣程式碼顯得臃腫。


CrawlSpider可以根據個人要求做到這個需求,說的白點就是,CrawlSpider就是靈活性高,可以任性一點。但CrawlSpider不會爬取start_urls這個連結的內容,只會根據rules篩選start_urls裡面的url,然後爬取這些url的內容

用法:根據上一教程,這裡只需修改spiders資料夾下的py檔案,這裡我新增一個py檔案,用於區別上一教程的
這裡寫圖片描述

其他檔案無需修改。
程式碼
這裡寫圖片描述
A:匯入包
B:設定rules內容,allow是設定start_urls這個網頁裡面符合條件的連結,deny是排除start_urls這個網頁含有條件的連結
C:callback就是指定的方法。
這段程式碼就是查詢start_urls這個網頁帶有shop而且不含有fr這個連結。

執行結果:
這裡寫圖片描述

程式碼下載
擴充套件:Scrapy模擬登入

相關文章