如何将两个用户定义的参数传递给scrapy spider

时间:2016-07-17 13:52:02

标签: python scrapy

How to pass a user defined argument in scrapy spider之后,我编写了以下简单的蜘蛛:

import scrapy

class Funda1Spider(scrapy.Spider):
    name = "funda1"
    allowed_domains = ["funda.nl"]

    def __init__(self, place='amsterdam', page=''):
        self.start_urls = ["http://www.funda.nl/koop/%s/p%s/" % (place, page)]

    def parse(self, response):
        filename = response.url.split("/")[-2] + '.html'
        with open(filename, 'wb') as f:
            f.write(response.body)

这似乎有效;例如,如果我使用

从命令行运行它
scrapy crawl funda1 -a place=rotterdam page=2

它生成的crawl: error: running 'scrapy crawl' with more than one spider is no longer supported 看起来类似于http://www.funda.nl/koop/rotterdam/。我接下来想扩展这个,以便可以指定一个子页面,例如http://www.funda.nl/koop/rotterdam/p2/。我尝试了以下内容:

start_urls

但是,如果我尝试使用

运行它
{{1}}

我收到以下错误:

{{1}}

我真的不明白这个错误消息,因为我不是要抓取两个蜘蛛,而只是尝试传递两个关键字参数来修改{{1}}。我怎么能做这个工作?

1 个答案:

答案 0 :(得分:4)

提供多个参数时,您需要在{{1>}前加上每个参数。

您案件的正确行是:

-a