python - 如果原始 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
,告诉蜘蛛寻找不同的元素?
解决方案
您可以简单地使用项目加载器并选择第一个非空值:
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())
推荐阅读
- r - 使用 r 中的 fread 从文件读取时解释换行符 \n 字符
- reactjs - 组件重新渲染生成问题
- c++ - 将 C++ 代码转换为 R 代码以生成数据
- gitlab - 如何增加 gitlab.com CI 中的内存限制?
- python-3.x - python中的返回语句在崇高的文本编辑器中不起作用
- mysql - 如何从我的 sql 数据库中获取最后一行元素?
- javascript - 文件系统不想在 Node.js 中写入特定文件
- c - 在 C 中显示二维数组中的随机字符串
- php - 你能解释一下这个 if 语句中双波浪号的目的吗?
- c++ - 在 Windows 中更新 clion 中的 cmake