在做爬蟲服務化時,有這樣乙個需求:介面用命令列啟動爬蟲,但是資料入庫時要記錄此次任務的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不能自動識別引數型別...