You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用BeautifulSoup解析指定网页href元素失败,疑似Cookie问题求解决

解决思路与修正代码

1 修正代码基础错误

现有代码存在导入不匹配问题:你将requests库别名为rq,但实际调用时用了requests.get,会直接触发命名错误,需先修正该基础问题。

2 核心问题处理

你猜测的Cookie限制确实是核心原因:该网站在用户未同意Cookie政策的前提下,返回的HTML不会包含目标资源链接,需要先完成Cookie授权才能拿到完整页面内容。

3 完整实现步骤

  • 用requests.Session()维持会话,确保Cookie在多次请求中自动传递
  • 请求头添加浏览器UA标识,避免被基础反爬策略拦截
  • 若仍拿不到内容,可通过浏览器F12抓包获取同意Cookie后的请求头Cookie值,填入请求头即可

4 可运行示例代码

from bs4 import BeautifulSoup
import requests

# 初始化会话自动维持Cookie
session = requests.Session()
# 模拟浏览器请求头
headers = {
    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/118.0.0.0 Safari/537.36",
    "Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8"
}
session.headers.update(headers)

page = session.get('https://www.murray-intl.co.uk/en/literature-library')
soup = BeautifulSoup(page.content, 'html.parser')
link = soup.find_all('a', class_='btn btn--naked btn--icon-left btn--block focus-within')
if link:
    url = link[0].get('href')
    print(url)
else:
    # 打印返回的页面内容排查是否未拿到完整数据
    print(soup.prettify())

5 兜底方案

如果上述代码仍无法获取目标元素,说明页面是JS动态渲染的,可替换为Selenium、Playwright等模拟浏览器的工具加载页面,工具会自动处理Cookie弹窗交互,加载完成后直接提取页面元素即可。

内容的提问来源于stack exchange,提问作者Sjamsing

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.07 01:54:01