【问题标题】:Scrapy unable to get xpathScrapy 无法获取 xpath
【发布时间】:2018-04-04 10:45:10
【问题描述】:

我在这个网站上得到了这个代码NTP

        <h5>Soundbooster</h5> <br><br>
      <p class="details">
        <b>Filtro attuale</b>
      </p>
      <blockquote>
        <p>
          <b>Catalogo:</b> 
            Aliant</br>
          <b>Marca e Modello:</b> 
            Mazda - 3 </br>
          <b>Versione:</b> 
            (3th gen) 2013-now (Petrol)
        </p>
      </blockquote>

我正在尝试提取元素“Mazda - 3”,但无法获取它,它返回空白。 在代码中,“马自达-3”部分是品牌价值。我得到名称和版本值。

这就是我的实现方式:

    for ntp in response.css('div.content-1col-nobox'):

        name = ntp.xpath('normalize-space(//h5/text())').extract_first()
        brand = ntp.xpath('normalize-space(//blockquote/p//text()[4])').extract_first()
        version = ntp.xpath('normalize-space(//div/blockquote[1]/p//text()[6])').extract_first()
        result = ("{}  {} - {}".format(name, brand, version))

这篇文章与这篇文章相关,它在那里工作,但我意识到我只得到了部分数据。见这里:Scrapy add.xpath or join xpath

谁能帮帮我。

提前谢谢你。

【问题讨论】:

    标签: python xpath scrapy


    【解决方案1】:

    我不确定您的代码中的 ntp 是什么,但这应该可以:

    brand = ntp.xpath('.//b[.="Marca e Modello:"]/following-sibling::text()[1]').extract_first()
    

    【讨论】:

    • 效果很好!非常感谢@gangabas,我花了一周的时间试图弄清楚如何让它发挥作用
    猜你喜欢
    • 2021-12-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-22
    • 2019-09-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多