[英]How to pass command-line keyword argument to class variable in scrapyd?
我正在研究 scrapy 項目。 我想知道如何將一個scrapyd api調用的參數傳遞給蜘蛛class。
我想將關鍵字參數 (file_path='C:\') 傳遞給我的蜘蛛 class 中的字典變量。
我嘗試了以下兩種方法,但沒有奏效。
方法一:
class MySpider(scrapy.Spider):
name = 'MySpider'
custom_settings = { 'FEED_URI': self.file_path }
方法二:
class MySpider(scrapy.Spider):
name = 'MySpider'
def __init__(self, file_path ='', **kwargs):
custom_settings = {
'FEED_URI' : file_path + '.json'
}
super(MySpider,self).__init__(**kwargs)
我已閱讀文檔。 我盡力按照文檔進行操作,但我不太明白。
您可以嘗試以下簡單的方法,我知道它適用於設置AUTOTHROTTLE_ENABLED
和DOWNLOAD_DELAY
例如,它也可能適用於FEED_URI
:
curl localhost:6800/schedule.json -d project=MySpider -d spider=MySpider -d setting=FEED_URI=whatever
檢查官方 scrapyd-documentation中的最后一個 schedule.json-example,其中DOWNLOAD_DELAY
設置為 2。
除此之外,還有多個問題試圖實現完全相同但不涉及scrapyd,也許它們對您有幫助:
https://github.com/scrapy/scrapy/issues/3900
https://github.com/scrapy/scrapy/issues/2392
順便說一句:Scrapy 2.1.0 FEED_URI
現在被標記為deprecated 。
要訪問 python 中的命令行 arguments,您需要枚舉sys.argv
例如:
import sys
for arg in sys.argv:
print(arg)
然后使用參數python main.py name=hello
從 cli 運行腳本
output 將是通過 cli 給出的每個參數,第一個 arg 是腳本名稱,此列表中的每個參數都是一個字符串,
為了避免手動解析 arguments 您可以使用 python package argparse
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.