假设我的起始 URL 与每个 ID 配对,例如 (http://www.foo.com, 53453)
。有没有办法读取给定响应的 parse()
中的 id(假设 response.url
是起始 URL)?有没有办法给响应一个自定义的“有效负载”?我知道我可以进行数据库查找,但我想知道它是否可以在内存中完成。
谢谢
最佳答案
覆盖start_requests()
method和在 meta
内传递 id
的 yield
Request
实例字典:
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映射,并通过response.url
获取id
> 在 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]
...
关于python - 如何加载带参数的起始 URL?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28837186/