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

Python Requests HTML爬虫仅能获取标题,其余元素无法提取文本

问题根因
  • 代码存在低级笔误:s.get(urlos)中的urlos未定义,正常运行会直接抛出NameError,如果你本地能跑通说明贴出的代码和实际运行代码不一致,先修正这个变量名错误。
  • 字段提取逻辑完全错误:你提取标题的方式是对元素对象的字符串返回值做切割替换,属于歪打正着刚好拿到了title属性值,完全不是requests-html设计的标准提取方式,这种写法没有可复制性,也是其他字段提取失败的核心诱因。
  • .text属性调用报错的直接原因:调用find()方法时未加first=True参数时,方法返回的是匹配到的所有元素组成的列表,列表对象本身没有.text属性,自然会报错;如果加了first=True仍拿不到文本,一是render等待时间过短,页面动态JS还没把价格、描述类的动态内容渲染到DOM树,只返回了带class的空标签壳;二是Kaufland的商品描述默认放在折叠手风琴组件里,未触发展开动作时组件内的文本不会加载。
  • 反爬拦截:默认请求头的特征太明显,站点会返回阉割版的页面结构,仅保留标题等少量静态字段,价格、描述这类动态字段全部留空,只返回空的DOM元素占位。
修复步骤
  1. 修正笔误,将get方法的参数从urlos改为提前定义的url变量。
  2. 给会话添加真实浏览器的User-Agent请求头,绕过基础反爬校验。
  3. 调大render方法的等待时长,增加页面滚动动作触发懒加载,对折叠的描述模块模拟点击展开后再提取内容。
  4. 全部字段统一用标准API提取:匹配单个元素时加first=True参数,直接调用元素的.text属性拿文本内容,废弃字符串切割的野路子写法。
修正后可运行代码
from requests_html import HTMLSession

url = 'https://www.kaufland.de/product/324406424/?search_value=staubsauger'
session = HTMLSession()
# 配置真实浏览器请求头
session.headers.update({
    "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",
    "Accept-Language": "de-DE,de;q=0.9"
})
resp = session.get(url)
# 延长渲染等待时间,滚动页面触发懒加载
resp.html.render(sleep=4, scrolldown=2)

# 标准方式提取标题
title = resp.html.find("h1.rd-title", first=True).text.strip()
# 提取价格
price = resp.html.find("span.rd-price-information__price", first=True).text.strip()

# 点击展开商品描述折叠面板
desc_header = resp.html.find("div.rd-product-description__top-accordion-header", first=True)
if desc_header:
    desc_header.click()
    resp.html.render(sleep=1)
description = resp.html.find("div.rd-product-description__top-accordion-content-description", first=True).text.strip()

print(f"商品标题:{title}")
print(f"商品价格:{price}")
print(f"商品描述:{description}")
注意事项

首次运行requests-html会自动下载Chromium内核,需等内核下载完成后才能正常渲染页面;如果仍出现元素不存在的报错,可将render的sleep参数调整到5-6,给JS渲染留足时间。不要依赖元素对象的字符串表示做内容提取,只要页面class、属性有微小变动,这种写法就会直接失效。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 11:24:40