python scrapy腳本報錯問題及解決
python scrapy腳本報錯
原本一個好好的爬蟲腳本,最近運行時突然報錯:
報錯代碼
如下:
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批量運行腳本
問題描述
今天遇到在遠程服務器上,os 批量啟動時存在啟動不了的情況
問題解決
批量啟動有好多種方式,但是我個人主要用的有兩個,
當?shù)谝粋€無法啟動時,測試第二種啟動方式 ,可以正常啟動;
"""
批量啟動
"""
# ------------------- 第一種 ----------------------------------------
import os
os.system("scrapy crawl Nj")
os.system("scrapy crawl Yanc")
os.system("scrapy crawl Hzs")
簡單做個記錄吧。

第二種,是調用scrapy 系統(tǒng)自帶的方式
為了讓同一個 Scrapy 項目下面的多個爬蟲實現(xià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()
使用這種方法,可以在同一個進程里面跑多個爬蟲。
# -------------------- 第二種 ------------------------------------
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 多個項目的批量啟動
總結
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關文章
Python 實現(xiàn)刪除某路徑下文件及文件夾的實例講解
下面小編就為大家分享一篇Python 實現(xiàn)刪除某路徑下文件及文件夾的實例講解,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-04-04
Python pandas軸旋轉stack和unstack的使用說明
這篇文章主要介紹了Python pandas軸旋轉stack和unstack的使用說明,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2021-03-03

