循环中的 Scrapy 调用请求

tom*_*gal 1 python web-crawler request scrapy

我想废弃一个包含带有过滤选项的组合框的网页。基本 url 相同,但请求有效负载取决于选定的组合框值。我有一个可用选项列表,我创建了一个循环,它遍历组合框值并执行请求。代码如下:

def parse_product_lines(self, response):
    options = json.loads(response.body_as_unicode())
    product_lines = options['products']

    for product_line in product_lines:
        payload = self.prepare_payload(product_line)

        scrapy.Request('http://example.com',
                       method="POST",
                       body=urllib.urlencode(payload),
                       callback=self.parse_items)

def parse_items(self, response):
    print response
Run Code Online (Sandbox Code Playgroud)

,但不执行请求。有人知道那里发生了什么吗?

zep*_*hor 5

首先,一个Spiderparse默认使用方法。

每个回调应该返回一个Item或一个dict,或一个迭代器。

你应该yield request在你的parse_product_lines方法中告诉scrapy接下来处理。