2017-03-07 42 views
2

我指着网上的新闻报道约10.000的URL列表不同的网站设置。我写了一些代码来使用Requests-library(Python 3.5)来刮掉这些新闻文章的html内容。目标是使用可读性模块检索文章内容并对其进行进一步分析。这在大部分时间都适用。但是,所有网站都是荷兰语,因此受欧盟政策的约束,他们必须要求同意使用cookies。其中一些例如http://telegraaf.nl通过加载一个单独的页面来完成,用户必须点击一个按钮。在这种情况下,我可以通过传递一个cookie的头部得到正常的文章内容:找出Cookie在使用Python

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,而无需在浏览器中手动检查?

感谢您的帮助。

回答

0

这更像是不是真正的答案评论。 Here是另一个可能有帮助的答案。
我会做的是处理,如果没有Cookie的工作的第一站点,然后尝试对付那些谁不加载单独的页面,然后那些单独的页面。
但是,如果你的问题是要知道是否有访问到饼干容易的方式,请求文件给出了一个方法,here

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

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

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

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

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

感谢您的信息。没有cookies或没有单独页面要求同意的网站可以正常工作,所以我可以处理这些问题。悲伤地访问cookie的方法不起作用,看起来:我必须积极设置一个特定的cookie,意味着我接受来自网页的cookie(我不会在这里进行讽刺)。有时它可能是'accept_cookies'设置为'1',另一个网站使用不同的格式。我目前知道的唯一方法是单击“接受cookies”按钮,然后检查我的浏览器设置以查看设置了新的cookie。 – Kevin

+0

@Kevin如果这是你可能会需要像'selenium'库来模拟浏览器的情况。有没有在页面中,也许像“输入型=‘提交’”或类似的东西的接受按钮的常见元素,如果是的话,你可以尝试将它们查明硒自动点击它们和接收cookies? –

+0

谢谢,我会试用Selenium并报告结果。可悲的是,有些人使用按钮,而其他人只是使用超链接。但是通常页面上只有一个或很少,所以有一点额外的编码可以完成这项工作。当我知道更多时,我会让你知道。 – Kevin