我正在做一个scrapy项目。我想知道如何从scrapyd的api调用中传递一个参数到spider类中。
我想把关键字参数(file_path='C:\')传给我的spider类中的字典变量。
我尝试了以下两种方法,但都没有成功。
方法1:将关键字传给我的spider类,我尝试了以下两种方法,但都没有成功。
class MySpider(scrapy.Spider):
name = 'MySpider'
custom_settings = { 'FEED_URI': self.file_path }
方法2:
class MySpider(scrapy.Spider):
name = 'MySpider'
def __init__(self, file_path ='', **kwargs):
custom_settings = {
'FEED_URI' : file_path + '.json'
}
super(MySpider,self).__init__(**kwargs)
我已经读到了 文件. 我尽力按照文档的要求去做,但我并没有完全明白这个想法。
在Python中访问命令行参数,你需要枚举超过 sys.argv
比如说。
import sys
for arg in sys.argv:
print(arg)
然后从cli运行这个脚本,参数是python main.py name=hello
输出将是通过 cli 给出的每个参数,第一个 arg 是脚本名称,这个列表中的每个参数将是一个 String。
为了避免手动解析参数,你可以使用python包里的 argparse
你可以试试下面的简单方法,我知道它对设置 AUTOTHROTTLE_ENABLED
和 DOWNLOAD_DELAY
例如,它可能适用于 FEED_URI
也是。
curl localhost:6800/schedule.json -d project=MySpider -d spider=MySpider -d setting=FEED_URI=whatever
检查上一个schedule.js-example,来自于 刮刮乐官方文档 其中 DOWNLOAD_DELAY
被设置为2。
除此之外,还有多个问题试图实现完全相同的事情,但没有scrapyd参与,也许它们对你有帮助。https:/github.comscrapyscrapyissues3900。 https:/github.comscrapyscrapyissues2392。
顺便说一下:随着Scrapy 2.1.0的推出 FEED_URI
现在被标记为 弃用.