【问题标题】:Scrapy: How to make a conditional (present or absent) XPATH return values when absent?Scrapy:如何在不存在时使条件(存在或不存在)XPATH 返回值?
【发布时间】:2013-06-22 14:14:18
【问题描述】:

我正在寻求从网站上抓取特定的产品信息。然而,我想要的 XPATH 标准之一并没有出现在每个产品的页面上。 (虽然所有产品都有名称、价格等,但有些没有显示推荐年龄)。

这不是问题,但是,当scrapy在shell中写入甚至返回数据时,它不再按照与start-url的列表关联的顺序,也不尊重某些部分数据的缺失网址。因此,我的所有数据(不同变量的多列)都与新的年龄列不匹配,因为它更短且无序。当我只关注显示年龄的产品时,情况并非如此。

有没有办法让没有所需 XPATH 和年龄的页面返回一个空格以在我的数据中保持匹配的列顺序?

这是我的 XPATH 选择器:

item["age"] = hxs.select('//li[contains(@class,"our-age")]/span/text()').extract()

(有些网页没有年龄,因此完全没有路径。)

【问题讨论】:

    标签: python xpath conditional selector scrapy


    【解决方案1】:
    xpath = '//li[contains(@class,"our-age")]/span/text()'
    item["age"] = hxs.select(xpath).extract() or [' ']
    

    【讨论】:

    • 谢谢,大部分都做到了。解析顺序仍然关闭(我正在使用两个单独的蜘蛛抓取网站的两个级别,并且需要它们的结果逐行匹配)。
    猜你喜欢
    • 1970-01-01
    • 2018-01-10
    • 2018-03-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-28
    • 2013-05-22
    相关资源
    最近更新 更多