python scrapy腳本報錯問題及解決
python scrapy腳本報錯
原本一個好好的爬蟲腳本,最近運(yùn)行時突然報錯:
報錯代碼
如下:
File "e:\python3.7.1\lib\site-packages\scrapy\core\downloader\middleware.py", line 43, in process_request
defer.returnValue((yield download_func(request=request,spider=spider)))
twisted.web._newclient.ResponseNeverReceived: [<twisted.python.failure.Failure twisted.internet.error.ConnectionDone: Connection was closed cleanly.>]
分析報錯
發(fā)送的請求未被接受,鏈接已斷開
百度最終定位到是請求頭的原因:
原本的請求頭的HOST被換了,腳本發(fā)起請求時就被拒了,因此把請求頭修改就好了
解決scrapy需要批量啟動多個腳本問題,scrapy批量運(yùn)行腳本
問題描述
今天遇到在遠(yuǎn)程服務(wù)器上,os 批量啟動時存在啟動不了的情況
問題解決
批量啟動有好多種方式,但是我個人主要用的有兩個,
當(dāng)?shù)谝粋€無法啟動時,測試第二種啟動方式 ,可以正常啟動;
""" 批量啟動 """ # ------------------- 第一種 ---------------------------------------- import os os.system("scrapy crawl Nj") os.system("scrapy crawl Yanc") os.system("scrapy crawl Hzs")
簡單做個記錄吧。
第二種,是調(diào)用scrapy 系統(tǒng)自帶的方式
為了讓同一個 Scrapy 項目下面的多個爬蟲實現(xiàn)真正的同時運(yùn)行,我們可以使用 Scrapy 的CrawlerProcess。
它的用法如下:
from scrapy.crawler import CrawlerProcess from scrapy.utils.project import get_project_settings settings = get_project_settings() crawler = CrawlerProcess(settings) crawler.crawl('爬蟲名1') crawler.crawl('爬蟲名2') crawler.crawl('爬蟲名3') crawler.start()
使用這種方法,可以在同一個進(jìn)程里面跑多個爬蟲。
# -------------------- 第二種 ------------------------------------ from scrapy.crawler import CrawlerProcess from scrapy.utils.project import get_project_settings settings = get_project_settings() crawler = CrawlerProcess(settings) crawler.crawl('Nj') crawler.crawl('Yanc') crawler.crawl('Hzs') crawler.start()
兩種方式都可以實現(xiàn),scrapy 多個項目的批量啟動
總結(jié)
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
Python 實現(xiàn)刪除某路徑下文件及文件夾的實例講解
下面小編就為大家分享一篇Python 實現(xiàn)刪除某路徑下文件及文件夾的實例講解,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-04-04Python pandas軸旋轉(zhuǎn)stack和unstack的使用說明
這篇文章主要介紹了Python pandas軸旋轉(zhuǎn)stack和unstack的使用說明,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2021-03-03