使用请求库绕过侵入式cookie语句

时间:2016-08-31 11:21:42

标签: python cookies beautifulsoup python-requests

我正在尝试使用requests库抓取网站。但是,我尝试访问的特定网站(http://www.vi.nl/matchcenter/vandaag.shtml)有一个非常具有侵入性的cookie声明。

我正在尝试按以下方式访问该网站:

from bs4 import BeautifulSoup as soup
import requests
website = r"http://www.vi.nl/matchcenter/vandaag.shtml"
html = requests.get(website, headers={"User-Agent": "Mozilla/5.0"})
htmlsoup = soup(html.text, "html.parser")

这将返回一个网页,该网页仅包含一个带有要接受的大按钮的cookie语句。如果您尝试在浏览器中访问此页面,则会发现按下该按钮会将您重定向到所请求的页面。如何使用requests

执行此操作

我考虑使用mechanize.Browser,但这似乎是一种相当迂回的方式。

2 个答案:

答案 0 :(得分:0)

尝试设置:

cookies = dict(BCPermissionLevel='PERSONAL')
html = requests.get(website, headers={"User-Agent": "Mozilla/5.0"}, cookies=cookies)

这将绕过cookie同意页面,并将您带到该页面。

注意:你可以通过分析在cookie集中页面上运行的javascript代码找到上述内容,它有点混淆但是应该不难。如果再次遇到相同类型的问题,请查看在事件处理集上执行的javascript代码所使用的cookie类型。

答案 1 :(得分:-1)

我发现了this SO问题,询问如何使用请求在帖子中发送Cookie。接受的答案表明,最新版本的Requests将通过简单的词典为您构建CookieJars。以下是原始答案中包含的POC代码。

import requests

cookie = {'enwiki_session': '17ab96bd8ffbe8ca58a78657a918558'}

r = requests.post('http://wikipedia.org', cookies=cookie)