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

Scrapy爬取div内h5标题文本返回None,请求技术协助

爬虫问题排查与修复

问题

爬取产品列表时,产品名称字段返回None,仅价格能正常获取,期望同时拿到h5标签中的产品名称和对应价格。

目标HTML结构

<div class="product-item">
  <a href="/product-catalogue?pid=6963">
    <div class="list-item-image">
      <img src="https://app.digitalconcept.mn/upload/media/product/0001/05/thumb_4760_product_thumb.png" alt="Кофе Bestcup rich creamy 3NI1 1ш">
    </div>
    <h5>Кофе Bestcup rich creamy 3NI1 1ш</h5>
    <div class="price">500₮</div>
  </a>
</div>

错误代码

# function to parse
def parse(self, response, **kwargs):
    data = response.xpath(".//div[contains(@class,'product-item')]")
    for item in data:
        yield {
            "name": data.xpath(".//*[@class='h5']/text()").get(),
            "price": data.xpath(".//div[contains(@class,'price')]/text()").get()
        }

问题分析

  1. 循环内引用错误:遍历data中的每个item时,错误使用了外层的data.xpath,导致每次都从整个产品列表节点查询,而非当前单个产品节点。
  2. XPath语法错误:h5是标签名而非class属性,原代码@class='h5'的写法完全错误,应直接选择h5标签。

修复后的代码

# function to parse
def parse(self, response, **kwargs):
    data = response.xpath(".//div[contains(@class,'product-item')]")
    for item in data:
        yield {
            "name": item.xpath(".//h5/text()").get(),
            "price": item.xpath(".//div[contains(@class,'price')]/text()").get()
        }

验证结果

修复后可得到期望输出:

{'name': 'Үхрийн махтай кимбаб', 'price': '3,700₮'}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 22:07:38