如何使用参数加载起始URL?

时间:2015-03-03 16:42:09

标签: python web-scraping scrapy

假设我的起始网址分别与ID配对,例如(http://www.foo.com, 53453)。有没有办法在给定响应的情况下读取parse()中的id(假设response.url是起始URL)?有没有办法给响应一个自定义的“有效载荷”?我知道我可以进行数据库查找,但我想知道它是否可以在内存中完成。

由于

1 个答案:

答案 0 :(得分:2)

覆盖start_requests() method字典中传递yield的{​​{3}}和Request id个实例:

class MySpider(Spider):
    def start_requests(self):
        items = get_url_and_ids_from_db()
        for url, id in items:
            yield Request(url, meta={'id': id})

    def parse(self, response):
        id = response.meta['id']
        ...

或者,您可以从__init__()中的数据库获取url-> id映射,并在id方法中获取response.url parse()

class MySpider(Spider):
    def __init__(self, *args, **kwargs):
        super(MySpider, self).__init__(*args, **kwargs)

        self.mapping = get_url_id_mapping_from_db()

        self.start_urls = mapping.keys()

    def parse(self, response):
        id = self.mapping[response.url]
        ...