【问题标题】:Scrapy modify cookieScrapy修改cookie
【发布时间】:2021-01-18 07:45:08
【问题描述】:

我可以用 scrapy 创建一个 cookie,但无法修改一个现有的 cookie。 在我正在工作的电子商务网站中,此 cookie 处理邮政编码,每个页面使用邮政编码来修改产品属性。我可以使用 selenium 修改邮政编码,刮掉每一页,但是刮的过程太慢了。我只想使用scrapy,修改这个请求/响应邮政编码cookie。

我可以使用此代码在我的请求上创建一个 cookie

在 SETTINGS.PY 中 COOKIES_ENABLED = 真

在蜘蛛.py 产生 scrapy.Request(response.urljoin(url), self.parsePage, cookies={'cp': codpost})

我使用以下方法获取 cookie 列表: cookies = response.headers.getlist("Set-Cookie")

我在每一页上得到的相关结果是: [..., b'cp=28029;过期=周日,2032 年 2 月 29 日 07:58:44 GMT;路径=/', ...]

它看起来不像是一对键/值。如何修改此 cookie?有什么建议吗?

【问题讨论】:

    标签: cookies scrapy


    【解决方案1】:

    我认为您不需要手动修改cookie,您可能可以使用cookiejar

    您可以针对不同的邮政编码产生多个请求,并在每个请求中包含不同的 cookiejar,这样 Scrapy 将为每个请求管理不同的会话。

    for code in postal_code:
        yield Request(url, meta={'cookiejar': code}, callback=self.callback_func)
    

    这是一个最小的例子,只是为了展示如何在请求中传递 cookiejar。请记住,code 表示的值对于您需要的每个不同会话都必须不同。

    【讨论】:

    • 非常感谢您的帮助和指导。我对cookiejar一无所知。您能否详细说明或指导我在哪里了解 cookiejar?无论如何,我会从我这边调查,看看我是否能解决我的问题。只是为了澄清我的问题:当我运行蜘蛛会话时,我只对一个 codpost 感兴趣,无需在同一会话中从多个 codpost 发出请求
    • 我打算将 codpost 作为参数传递给蜘蛛并为这个 codpost 运行
    猜你喜欢
    • 1970-01-01
    • 2011-07-11
    • 2016-03-11
    • 2023-01-16
    • 2014-04-12
    • 2013-07-30
    • 1970-01-01
    • 2021-04-11
    • 1970-01-01
    相关资源
    最近更新 更多