使用BeautifulSoup爬取谷歌新闻时遇到隐私声明,能否忽略或绕过?
问题根因
你触发的是谷歌针对欧盟/EEA地区访客设置的Cookie同意墙,当请求IP归属欧盟区域时,谷歌会强制返回隐私声明页面要求用户同意Cookie政策,才会提供正常内容。
可行解决方法
添加CONSENT Cookie跳过验证
谷歌的该验证机制只校验请求头中是否携带已同意的Cookie标识,只需要在请求头中加入Cookie: CONSENT=YES+前缀的任意有效值即可跳过该验证,修改后代码参考如下:from bs4 import BeautifulSoup import requests headers = { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36', 'Cookie': 'CONSENT=YES+cb.20240101-01-p0.zh-CN+FX+123' } r = requests.get("https://www.google.com/news", headers=headers) soup = BeautifulSoup(r.content, 'html.parser') print(soup.prettify())其中Cookie的
CONSENT值后缀可随意填写,只要前缀为YES+即可生效。切换非欧盟地区请求IP
该隐私墙仅对欧盟/EEA地区的请求生效,如果你将请求代理切换到美国、东南亚等非欧盟区域的IP,无需额外设置即可直接获取正常的谷歌新闻页面内容。使用官方接口获取内容
直接调用谷歌新闻官方公开的API获取内容,完全规避页面验证、反爬规则问题,返回的结构化数据也比网页解析更稳定。
内容的提问来源于stack exchange,提问作者leadmeout
相关产品推荐
相关产品推荐

