首页 > 解决方案 > 如果原始 XPath 选择器不存在,如何处理替代 XPath 选择器?

问题描述

我正在使用 scrapy ( https://scrapy.org/ ) 来爬取很多网站(近 300 个)并将标题和日期保存在 json 中。标题大多是网站上的第一个H1。但日期很棘手。现在,我正在使用这个 XPath 选择器:

item['date'] = response.xpath("//time/text()").get()

但是该网站使用不同类型的日期格式。有时 as span,有时作为普通段落,有时 astime和其他使用a标签。

问题:如果第一个不存在,我如何实现类似if then else结构的东西item,告诉蜘蛛寻找不同的元素?

标签: pythonxpathweb-scrapingscrapy

解决方案


您可以简单地使用项目加载器并选择第一个非空值:

l.add_xpath('date', '//first/xpath')
l.add_xpath('date', '//second/xpath')
l.add_xpath('date', '//third/xpath')

并在items.py

date = scrapy.Field(output_processor=TakeFirst())

推荐阅读