Scrapy:将参数传递给 cmdline.execute()
Scrapy: Pass arguments to cmdline.execute()
我知道在从命令行运行使用 scrapy spider 时如何传递参数。但是,当我尝试使用 scrapy 的 cmdline.execute() 从脚本以编程方式 运行 它时遇到问题。
我需要传递的参数是我之前格式化为字符串的列表,就像这样:
numbers = "one,two,three,four,five"
colors = "red,blue,black,yellow,pink"
cmdline.execute('scrapy crawl myspider -a arg1='+numbers+' -a arg2='+colors)
蜘蛛是...
class MySpider(Spider):
name = "myS"
def __init__(self, arg1, arg2):
super(MySpider, self).__init__()
#Rest of the code
但是,当我 运行 它时,我得到这个错误:
Traceback (most recent call last):
File "C:/Users/ME/projects/script.py", line 207, in run
cmdline.execute("scrapy crawl myS -a arg1="+numbers+" -a data="+colors)
File "C:\Python27\lib\site-packages\scrapy\cmdline.py", line 123, in execute
cmdname = _pop_command_name(argv)
File "C:\Python27\lib\site-packages\scrapy\cmdline.py", line 57, in _pop_command_name
del argv[i]
TypeError: 'str' object doesn't support item deletion
有什么想法吗?
OS: Windows7;
Python版本:2.7.8
execute()
函数需要参数列表,而不是字符串。试试这个:
cmdline.execute([
'scrapy', 'crawl', 'myspider',
'-a', 'arg1='+numbers, '-a', 'arg2='+colors])
您是否缺少 .split()?尝试以下操作,看看会发生什么。
cmdline.execute("scrapy crawl myspider -a arg1="+numbers+" -a arg2=" + colors + "".split())
我知道在从命令行运行使用 scrapy spider 时如何传递参数。但是,当我尝试使用 scrapy 的 cmdline.execute() 从脚本以编程方式 运行 它时遇到问题。
我需要传递的参数是我之前格式化为字符串的列表,就像这样:
numbers = "one,two,three,four,five"
colors = "red,blue,black,yellow,pink"
cmdline.execute('scrapy crawl myspider -a arg1='+numbers+' -a arg2='+colors)
蜘蛛是...
class MySpider(Spider):
name = "myS"
def __init__(self, arg1, arg2):
super(MySpider, self).__init__()
#Rest of the code
但是,当我 运行 它时,我得到这个错误:
Traceback (most recent call last):
File "C:/Users/ME/projects/script.py", line 207, in run
cmdline.execute("scrapy crawl myS -a arg1="+numbers+" -a data="+colors)
File "C:\Python27\lib\site-packages\scrapy\cmdline.py", line 123, in execute
cmdname = _pop_command_name(argv)
File "C:\Python27\lib\site-packages\scrapy\cmdline.py", line 57, in _pop_command_name
del argv[i]
TypeError: 'str' object doesn't support item deletion
有什么想法吗?
OS: Windows7; Python版本:2.7.8
execute()
函数需要参数列表,而不是字符串。试试这个:
cmdline.execute([
'scrapy', 'crawl', 'myspider',
'-a', 'arg1='+numbers, '-a', 'arg2='+colors])
您是否缺少 .split()?尝试以下操作,看看会发生什么。
cmdline.execute("scrapy crawl myspider -a arg1="+numbers+" -a arg2=" + colors + "".split())