python - Scrapy:将参数传递给 cmdline.execute()

标签 python web-scraping scrapy

我知道从命令行运行 scrapy 蜘蛛时如何传递参数。但是,当我尝试使用 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

有什么想法吗?

操作系统:Windows7; Python版本:2.7.8

最佳答案

execute() 函数需要参数列表,而不是字符串。试试这个:

cmdline.execute([
    'scrapy', 'crawl', 'myspider',
    '-a', 'arg1='+numbers, '-a', 'arg2='+colors])

关于python - Scrapy:将参数传递给 cmdline.execute(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28354770/

相关文章:

python - 在同一类中的不同方法创建的对象上调用类中的方法?

python - 从 HTML 代码获取图像宽度

r - 使用 R 抓取 "aspx"页面

python - 当安装了两个 python 版本时,如何让 scrapy 使用 python 3?

python - 字符串中数字的总和

python - 不使用 OpenCV 获取图像掩码

javascript - 在 Python 中将 base64 数据解码为数组

javascript - Capybara 等待页面用 Ruby 完全加载所有元素

python - 网络抓取具有通过ajax加载的动态内容的网页

python - scrapy中 'slot'是什么意思?