有的時候在抓取過程中可能會出現同乙個**相同資料在不同url裡有不同爬取方法的情況,所以這個時候需要編寫多個爬蟲,最開始是使用cmdline.execute(「scrapy crawl spider1」.split()) 啟動爬蟲,但發現用這種方法執行多個最後真正抓取的只有第二個。
from scrapy import cmdline
cmdline.execute("scrapy crawl spider1".split())
cmdline.execute("scrapy crawl spider2".split()) # 只會執行後面這乙個
此方法行不通,後面採用了自定義scrapy命令解決這個問題,下面放**和步驟:
建立commands目錄
在commands下面新增乙個檔案crawlall.py 和init.py檔案,這一步貌似不能省略
和spider目錄同級
在crawlall.py裡面增加**:(這裡主要通過修改scrapy的crawl命令來完成同時執行spider的效果。crawl的原始碼可以在此檢視:
from scrapy.commands import scrapycommand
from scrapy.utils.project import get_project_settings
class command(scrapycommand):
requires_project = true
def syntax(self):
return '[options]'
def short_desc(self):
return 'runs all of the spiders'
def run(self, args, opts):
spider_list = self.crawler_process.spiders.list()
for name in spider_list:
self.crawler_process.crawl(name, **opts.__dict__)
self.crawler_process.start()
在settings裡面新增配置
commands_module = 'ugaming.commands' # 自己的爬蟲名稱
執行命令scrapy crawlall 或者新建啟動檔案:
cmdline.execute("scrapy crawlall".split())
scrapy爬蟲框架
作者經過幾周的python爬蟲實踐之後,深入學習了一下scrapy這個爬蟲框架,現將一些基本知識和 總結整理一下,以備後查。2.scrapy的命令列使用 這部分網上很多部落格都有總結,不需要背,理解會用主要的命令 startproject crawl fetch list genspider.即可,...
scrapy 爬蟲框架
1.安裝 公升級pip版本 pip install upgrade pip 通過pip安裝scrapy框架 pip install scrapy 安裝成功 只執行scrapy 進行測試是否安裝成功 2.scrapy startproject 爬蟲專案名稱 執行此命令,可以生成乙個爬蟲專案 會預先生成...
Scrapy爬蟲框架
scrapy中的各大元件及其功能 1.scrapy引擎 engine 引擎負責控制資料流在系統的所有元件中流動,並在相應動作發生時觸發事件。2.排程器 scheduler 排程器從引擎接收request並將它們入隊,以便之後引擎請求request時提供給引擎。4.spider。spider是scra...