我正在尝试使用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
,但这似乎是一种相当迂回的方式。
答案 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)