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

亚马逊网页爬取遇AttributeError:NoneType无get_text属性

亚马逊商品页面爬取:无法获取productTitle元素的问题解决

首次尝试爬取亚马逊商品页面获取标题时,遇到错误:通过id="productTitle"查找元素返回None,调用get_text()触发AttributeError: 'NoneType' object has no attribute 'get_text'。

执行代码

# import libaries
from bs4 import BeautifulSoup
import requests

# Connect to website 
URL = 'https://www.amazon.com/Hanes-Short-Sleeve-Beefy-T-Smoke/dp/B01KNM3EAM/ref=sr_1_4?crid=5ZT2DA0EILMA&keywords=t+shirts+for+man&qid=1692275014&sprefix=t+s%2Caps%2C422&sr=8-4'

headers = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/115.0.0.0 Safari/537.36", 
    "X-Amzn-Trace-Id": "Root=1-64de10e0-49a614555bcfb2fc5d15488a"}

page = requests.get(URL, headers=headers)

soup1 = BeautifulSoup(page.content, "lxml")

soup2 = BeautifulSoup(soup1.prettify(), "lxml")

title = soup2.find(id="productTitle").get_text()

print(title)

报错信息

---------------------------------------------------------------------------
AttributeError                            Traceback (most recent call last)
Input In [42], in <cell line: 14>()
     10 soup1 = BeautifulSoup(page.content, "lxml")
     12 soup2 = BeautifulSoup(soup1.prettify(), "lxml")
---> 14 title = soup2.find(id="productTitle").get_text()
     16 print(title)

AttributeError: 'NoneType' object has no attribute 'get_text'

已确认信息

页面中确实存在目标元素,对应的HTML片段:

<span id="productTitle" class="a-size-large product-title-word-break">  "Hanes Mens Beefyt T-Shirt, Classic Heavyweight Cotton Crewneck Tee, Roomy Fit, 1 Or 2 Pack, Available in Tall" </span>

解决建议

  • 移除重复解析步骤:代码中soup2 = BeautifulSoup(soup1.prettify(), "lxml")属于多余操作,prettify()会改变HTML结构,导致后续查找失败。直接使用soup1进行元素查找即可。
  • 验证请求状态:先打印print(page.status_code),确认返回值为200。如果是4xx/5xx,说明请求被亚马逊拦截,需要调整请求头或使用代理。
  • 完善请求头:补充Accept-Language字段,模拟更真实的浏览器请求,示例:
    headers = {
        "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/115.0.0.0 Safari/537.36",
        "Accept-Language": "zh-CN,zh;q=0.9,en;q=0.8",
        "X-Amzn-Trace-Id": "Root=1-64de10e0-49a614555bcfb2fc5d15488a"
    }
    
  • 备用定位方式:若通过id查找仍失败,可尝试通过class属性定位:
    title = soup1.find("span", class_="a-size-large product-title-word-break").get_text(strip=True)
    
  • 反爬应对:亚马逊反爬机制严格,若上述方法无效,可尝试添加浏览器Cookie(从实际访问的请求中复制),或使用代理IP分散请求来源。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 06:35:53