【问题标题】:Find out what cookies to set on different websites using Python找出使用 Python 在不同网站上设置的 cookie
【发布时间】:2017-03-07 19:30:33
【问题描述】:

我有一个包含大约 10.000 个指向在线新闻文章的 URL 的列表。我使用 Requests-library (Python 3.5) 编写了一些代码来抓取这些新闻文章的 html 内容。目标是使用可读性模块检索文章内容并对其进行进一步分析。这在大多数情况下都有效。但是,所有网站都是荷兰语,因此受欧盟政策的约束,他们必须征得同意才能使用 cookie。其中一些,例如http://telegraaf.nl,通过加载一个单独的页面来执行此操作,用户必须在该页面中单击一个按钮。在这种情况下,我可以通过在 header 中传递一个 cookie 来获取正常的文章内容:

import requests

user_agent = 'Mozilla/5.0'
url = 'http://www.telegraaf.nl/dft/geld/werk-inkomen/27740808/__Vechten_om_werk_in_noorden__.html'
cookies_telegraaf = {'TMGCOOKIE': '{%22version%22:%22t3%22}'}
html = requests.get(url, headers={"User-Agent": user_agent}, cookies=cookies_telegraaf)
print(html.content)

这会打印出我需要的 html 内容。问题是,每个站点都需要不同的 cookie。所以我的问题是:有没有办法找出在每个网站的标头中传递的特定 cookie,而无需手动检查浏览器?

感谢您的帮助。

【问题讨论】:

    标签: python cookies web-scraping python-requests


    【解决方案1】:

    这更像是评论而不是真正的答案。 Here 是另一个可能有帮助的答案。
    我要做的是首先处理没有 cookie 的网站,然后尝试处理那些不加载单独页面的网站,然后再处理那些有单独页面的网站。
    但是,如果您的问题是想知道是否有办法轻松访问 cookie,请求文档提供了一种方法,here:

     url = 'http://example.com/some/cookie/setting/url'
    >>> r = requests.get(url)
    
    >>> r.cookies['example_cookie_name']
    'example_cookie_value'
    

    要将自己的cookies发送到服务器,可以使用cookies参数:

    >>> url = 'http://httpbin.org/cookies'
    >>> cookies = dict(cookies_are='working')
    
    >>> r = requests.get(url, cookies=cookies)
    >>> r.text
    '{"cookies": {"cookies_are": "working"}}'
    

    【讨论】:

    • 感谢您的信息。没有 cookie 或没有单独页面请求同意的网站可以正常工作,所以我可以处理这些。遗憾的是,您访问 cookie 的方法似乎行不通:我必须主动设置一个特定的 cookie,暗示我接受来自网页的 cookie(我不会在这里讽刺那个)。有时它可能是“accept_cookies”设置为“1”,另一个站点使用不同的格式。目前我知道的唯一方法是单击“接受 cookie”按钮,然后检查我的浏览器设置以查看设置了哪些新 cookie。
    • @Kevin 如果是这种情况,您可能需要使用 selenium 之类的库来模拟浏览器。页面的接受按钮中是否有一个共同的元素,可能是“input type='submit'”之类的东西,如果是这样,您可以尝试将它们精确定位到 selenium 以自动点击它们并接收 cookie ?跨度>
    • 谢谢,我会试用 Selenium 并报告结果。可悲的是,有些人使用按钮,而其他人只使用超链接。但是一页上通常只有一个或很少,所以一些额外的编码可能会完成这项工作。当我知道更多时,我会告诉你。
    • 您找到合适的解决方案了吗?
    猜你喜欢
    • 2020-11-18
    • 2014-05-06
    • 1970-01-01
    • 2014-01-12
    • 1970-01-01
    • 2015-02-23
    • 2021-03-09
    • 2021-06-03
    • 2011-06-18
    相关资源
    最近更新 更多