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

Python使用BeautifulSoup提取Trustpilot网页元素文本返回None如何解决

问题原因

你遇到返回全为None的问题主要有两个核心原因:

  1. 你选用的类名styles_reviewContent__3TSDf包含Trustpilot前端构建时自动生成的随机哈希后缀,这类后缀会随网站版本更新频繁变动,属于不稳定选择器,匹配不到对应元素是大概率情况。
  2. 直接用requests.get不带请求头发起请求时,Trustpilot的反爬机制会返回异常拦截页面,你拿到的页面内容本身就不存在需要定位的元素。

解决方法

按以下步骤调整即可正常抓取:

  • 首先添加标准浏览器请求头,伪装正常用户访问,避免被反爬策略拦截
  • 替换不稳定的带哈希类名,优先使用网站固定的data-testid属性做选择器,这类属性是开发者特意标记的功能属性,长期不会变动
  • 若静态页面仍无目标内容,说明评论是客户端JS异步渲染的,更换为Selenium、Playwright等支持JS渲染的工具获取完全加载后的页面即可

修正后的代码示例

import requests
from bs4 import BeautifulSoup

url = "https://uk.trustpilot.com/review/rockar.com"
# 配置浏览器请求头
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"
}
resp = requests.get(url, headers=headers)
soup = BeautifulSoup(resp.content, 'html.parser')

# 用固定属性定位评论块和标题
for review_block in soup.find_all('div', {'data-testid': 'review-content'}):
    review_title = review_block.find("h2", {'data-testid': 'review-title'})
    if review_title:
        print(review_title.get_text(strip=True))

注:如果运行上述代码仍无法获取内容,说明该站点当前已将评论改为纯客户端异步渲染,替换为JS渲染工具爬取即可。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 03:15:03