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

使用Scrapy提取id时返回None,求技术解决方案

解决方案

问题核心

  • 页面是动态渲染的:目标id字段由JavaScript生成,普通scrapy.Request只能抓取静态HTML,无法获取动态加载的内容。
  • 提取逻辑有瑕疵:直接返回Selector对象而非实际文本值,且XPath可能存在冗余定位。

修正步骤

1. 改用SeleniumRequest加载动态内容

你已导入SeleniumRequest但未实际使用,替换普通请求确保页面完全渲染:

def start_requests(self):
    keywords=['Alsace']
    for keyword in keywords:
        amaz_url=f"https://www.pagesjaunes.fr/annuaire/region/{keyword}/reparateur-electromenager"
        yield SeleniumRequest(
            url=amaz_url,
            callback=self.parse,
            meta={'keyword':keyword},
            wait_time=3  # 等待页面渲染,可根据实际情况调整时长
        )

2. 修正XPath与提取方式

  • 精简XPath:如果id直接在li.bi.bi-generic标签上,路径改为//li[@class='bi bi-generic']/@id(去掉多余的//);若id在子元素内,需对应调整路径。
  • 提取实际值:用.getall()批量获取,且判断过滤空值:
def parse(self,response):
    keyword=response.meta['keyword']
    for item_id in response.xpath("//li[@class='bi bi-generic']/@id").getall():
        if item_id:
            yield{
                'id': item_id,
                'keyword': keyword
            }

3. 验证页面内容(可选)

若仍无法提取,先打印页面源码确认动态内容是否加载:

def parse(self,response):
    print(response.text)  # 查看渲染后的HTML是否包含目标id
    # 后续提取逻辑...

完整修正代码

import scrapy
from scrapy_selenium import SeleniumRequest

class BarSpider(scrapy.Spider):
    name = 'bar'
      
    def start_requests(self):
        keywords=['Alsace']
        for keyword in keywords:
            amaz_url=f"https://www.pagesjaunes.fr/annuaire/region/{keyword}/reparateur-electromenager"
            yield SeleniumRequest(
                url=amaz_url,
                callback=self.parse,
                meta={'keyword':keyword},
                wait_time=3
            )

    def parse(self,response):
        keyword=response.meta['keyword']
        for item_id in response.xpath("//li[@class='bi bi-generic']/@id").getall():
            if item_id:
                yield{
                    'id': item_id,
                    'keyword': keyword
                }

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 20:13:17