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

网页爬取报错:'NoneType' object has no attribute 'text'及循环异常求助

爬取Jumia尼日利亚Computing页面的问题解决办法

1. 先搞定低级拼写错误

你提到把.text误写成.test,这是直接触发错误的原因之一,先全局替换代码里所有的.test为.text即可。

2. 解决AttributeError: 'NoneType' object has no attribute 'text'

这个错误的核心是:你要提取文本的元素未找到,返回了None,此时调用.text必然报错。解决步骤如下:

  • 重新核对元素选择器:打开目标页面按F12,重新定位商品卡片、名称、价格等元素的CSS选择器/XPath。Jumia页面结构会定期更新,旧选择器大概率已失效。
  • 处理动态加载内容:如果用requests发送静态请求,无法获取JS渲染的商品数据,此时建议换用Selenium或Playwright模拟浏览器加载,确保能拿到完整的页面DOM结构。
  • 添加元素存在判断:提取文本前先检查元素是否存在,避免直接硬调用属性,示例代码:
price_tag = item.find('span', class_='prc')
price = price_tag.text.strip() if price_tag else '暂无价格'
  • 设置防反爬请求头:给请求添加真实的User-Agent,避免被网站识别为爬虫,示例:
headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/119.0.0.0 Safari/537.36'
}
resp = requests.get('https://www.jumia.com.ng/computing/', headers=headers)

3. 解决循环未正常执行问题

循环不执行基本是因为你要遍历的元素列表为空(比如items = soup.find_all(...)返回空列表),原因和上述元素找不到的情况一致:

  • 先确认选择器能正确获取目标列表,可通过打印len(items)查看是否有数据
  • 若为动态加载问题,使用浏览器渲染工具获取完整页面后再解析
  • 调试时多打印中间结果,排查是请求未拿到正确页面,还是选择器书写错误

参考修正代码(用Selenium)

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.chrome.service import Service
import time

# 启动Chrome浏览器
driver = webdriver.Chrome(service=Service('chromedriver.exe'))
driver.get('https://www.jumia.com.ng/computing/')
time.sleep(3)  # 等待页面加载完成,避免因未加载完全拿不到元素

# 获取所有商品卡片
goods_list = driver.find_elements(By.CSS_SELECTOR, 'article.prd._fb.col.c-prd')
for goods in goods_list:
    # 提取商品名称
    name_elem = goods.find_element(By.CSS_SELECTOR, 'h3.name')
    goods_name = name_elem.text.strip() if name_elem else '无名称'
    # 提取价格
    price_elem = goods.find_element(By.CSS_SELECTOR, 'span.prc')
    goods_price = price_elem.text.strip() if price_elem else '无价格'
    print(f"商品: {goods_name} | 价格: {goods_price}")

driver.quit()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 02:15:42