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

照着教程写Python爬虫定位元素返回None,他人可运行我无法成功是为什么

问题排查与修复方案

1. 核心语法错误

请求商品详情页后,解析时误用了之前搜索页的响应内容:

r2 = requests.get(testlink)
soup = BeautifulSoup(r.content, 'lxml') # 此处r为搜索页响应对象,需替换为r2.content

修正后代码:

soup = BeautifulSoup(r2.content, 'lxml')

2. 反爬拦截处理

目标站点存在基础反爬规则,默认requests请求的User-Agent会被识别为爬虫,返回拦截页面,无法定位到目标元素。需添加请求头模拟浏览器访问:

# 全局定义请求头
headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/124.0.0.0 Safari/537.36'
}
# 所有get请求都携带headers
r = requests.get(f'https://www.thewhiskyexchange.com/search?q=japanese+whiskey&pg={x}&psize=24&sort=rdesc', headers=headers)
r2 = requests.get(testlink, headers=headers)

3. 逻辑缺陷修正

  • time.sleep(5)位置错误:延时放置在解析逻辑后无法起到防反爬作用,需调整到两次请求之间。
  • 评分定位规则不合理:不同商品的星级class后缀随分数动态变化,写死star-rating--45会导致其他商品定位失败,建议改为模糊匹配:
rating = soup.find('span', class_=lambda c: c and 'review-overview__rating' in c)

4. 环境校验

确保本地已安装lxml解析库,未安装可执行命令pip install lxml完成安装,否则解析规则会失效。
可通过打印r2.status_code确认请求是否成功,打印r2.text确认返回内容和浏览器访问结果一致。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 21:06:07