找出使用Python

时间:2017-03-07 19:30:33

标签: python cookies web-scraping python-requests

我有一个大约10,000个指向在线新闻文章的网址列表。我已经编写了一些代码来使用Requests-library(Python 3.5)来抓取这些新闻文章的html内容。目标是使用可读性模块检索文章内容并对其进行进一步分析。这大部分时间都有效。但是,所有网站都是荷兰语,因此受欧盟政策的约束,他们必须要求同意使用cookie。其中一些(例如http://telegraaf.nl)通过加载用户必须单击按钮的单独页面来执行此操作。在这种情况下,我可以通过在标题中传递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,而无需手动检查浏览器?

感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

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

 url = 'http://example.com/some/cookie/setting/url'
>>> r = requests.get(url)

>>> r.cookies['example_cookie_name']
'example_cookie_value'

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

>>> url = 'http://httpbin.org/cookies'
>>> cookies = dict(cookies_are='working')

>>> r = requests.get(url, cookies=cookies)
>>> r.text
'{"cookies": {"cookies_are": "working"}}'