Python Scrapy 爬蟲框架 | 6、繼續爬蟲、終止和重啟任務
- 2019 年 12 月 31 日
- 筆記
0x00 前言
有時候我們不想只爬一個頁面的,比如之前我只爬了主頁,但是現在想把其他頁面的也爬下來,這就是本文的任務。
0x01 修改程式碼
在之前的基礎上,修改 teamssix_blog_spider.py 文件,首先添加 start_urls
start_urls = [ 'https://www.teamssix.com', 'https://www.teamssix.com/page/2/', 'https://www.teamssix.com/page/3/', 'https://www.teamssix.com/page/4/', 'https://www.teamssix.com/page/5/' ]
接下來在 sub_article 函數尾部添加 parse 函數的全部程式碼
soup = BeautifulSoup(response.text, 'html.parser') for i in soup.select('.post-title'): url = 'https://www.teamssix.com{}'.format(i['href']) yield scrapy.Request(url, callback=self.sub_article)
所以 sub_article 函數的完整程式碼就是這個樣子:
def sub_article(self,response): soup = BeautifulSoup(response.text,'html.parser') title = self.article_title(soup) list = self.article_list(soup) print(title) item = TeamssixItem(_id = response.url,title = title,list = list) yield item soup = BeautifulSoup(response.text, 'html.parser') for i in soup.select('.post-title'): url = 'https://www.teamssix.com{}'.format(i['href']) yield scrapy.Request(url, callback=self.sub_article)
從最後一行 callback=self.sub_article 這裡不難看出這裡其實就是一個循環, sub_article 函數第一遍執行完,又會調用繼續執行第二遍,直到 start_urls 被執行完。
0x02 運行
程式碼修改的就這些,接下來直接 scrapy crawl blogurl 運行程式碼,來到 robo 3T 看看爬取到的數據。

最終在這些 start_urls 中爬取下來了 43 篇文章,Emm,還行。
這次的 Scrapy 學習筆記就更新到這裡,這個項目的程式碼已經放在了我的 GitHub 里,項目鏈接已經放在了下面。
項目地址:https://github.com/teamssix/scrapy_study_notes 參考鏈接: https://youtu.be/aDwAmj3VWH4 http://doc.scrapy.org/en/latest/topics/architecture.html