簡體   English   中英

如何將命令行關鍵字參數傳遞給scrapyd中的class變量?

[英]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_ENABLEDDOWNLOAD_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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM