Scrapy命令列呼叫傳入自定義引數

2022-03-04 15:36:12 字數 1342 閱讀 3410

在做爬蟲服務化時,有這樣乙個需求:介面用命令列啟動爬蟲,但是資料入庫時要記錄此次任務的task_id。

簡單說就是,scrapy命令列啟動時要動態傳參進去。

在spider中定義乙個建構函式

def

__init__(self, task_id=none, *args, **kwargs):

super(atomicscientistspider, self).

__init__(*args, **kwargs)

self.task_id = task_id

通過使用-a可以向爬蟲檔案中定義的類傳遞屬性,然後在該類中獲取該屬性即可實現傳入自定義引數。

這樣,在啟動scrapy時,task_id當做引數傳入spider中了:

可用來傳入引數,控制爬取的頁數。

def

__init__(self, pages=none, *args, **kwargs):

super(lvideospider, self).

__init__(*args, **kwargs)

self.pages =pages

...def

parse(self, response):

pages = re.findall(r'

當前:1/(\d+)頁

', response.text, re.s)[0]

link = response.meta['

format_page']

#如果self.pages存在,那麼就會代替正則取到的頁數

ifself.pages:

pages =self.pages

print('

共' + str(pages) + '頁'

)

for page in range(1, int(pages) + 1):

page_link =link.format(page)

yield request(page_link, callback=self.parse_video_link,

meta=, dont_filter=true)

啟動並控制爬取的頁數:

scrapy crawl spider_name -a pages=10
參考:

Scrapy 命令列工具

startproject 全域性命令 在當前路徑下建立乙個名為myproject的 scrapy專案 語法 scrapy startproject myproject genspider 需要專案 在當前專案中建立spider僅僅是建立spider的一種快捷方法,可以使用提前定義好的模板來生成spi...

scrapy 命令列操作

1.建立專案 scrapy startproject myproject cd myproject 2.建立爬蟲 scrapy genspider t crawl myspider www.baidu.com 建立有rules配置 3.執行爬蟲 scrapy crawl myspider 4.錯誤檢...

python傳入命令列引數

1.pycharm要想快速調出命令列引數設定面板,快捷鍵為alt shift f10,之後按下0即可 a sys.argv 1 b sys.argv 2 在引數變數中輸入5和6,等同於 a 5 b 6 3.究其原因,是由於python語言本身的限制,導致變數沒有固定的型別,ide不能自動識別引數型別...