python - 如何加载带参数的起始 URL?

标签 python web-scraping scrapy

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

谢谢

最佳答案

覆盖start_requests() method和在 meta 内传递 idyield 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/

相关文章:

python - 无法使用 python azure-storage-file-datalake SDK 在 Azure Data Lake Gen2 中创建追加 Blob

Python 脚本从 crontab 失败

python - 从<a>标记内的网页中提取公司名称

python-3.x - 如何将scrapy数据中的数据发送到django模型?

python - Scrapy 调用另一个 Url

python - 如何序列化作为 XML Exporter 中的项目列表的 Scrapy 字段

python - CFUNCTYPE 的增量引用计数器

python - 具有仿射间隙惩罚的 Smith-Waterman 算法中的回溯

python - 无法从网页上抓取所有公司名称

linux - 使用 CURL 抓取图像?