为了账号安全,请及时绑定邮箱和手机立即绑定

如何获取包含与正则表达式匹配的文本的 <p>

如何获取包含与正则表达式匹配的文本的 <p>

陪伴而非守候 2021-08-24 15:14:21
我正在尝试使用scrapy、xpath 和regex来抓取这个网站。我已经检查并尝试了这个问题的答案: xpath+ regex:matches text我想创建一个<p>包含文本“11(太阳)”或“9(星期五)”等的“scrapy.selector.unified.SelectorList” ,并循环遍历列表。event = response.xpath('//p[matches(text(), "\d+\s\(\w{3}\)")]').extract()不起作用。仅供参考,以下确实有效。event = response.xpath('//p[contains(text(), "11 (sun)")]').extract()我在这里缺少什么?
查看完整描述

2 回答

?
慕桂英546537

TA贡献1848条经验 获得超10个赞

如果您只关注文本,Karan Verma 的回答就足够了。
如果您追求元素本身,请继续阅读。

matches 仅在 XPath 2.0 及更高版本中可用(与其他正则表达式函数一样),在scrapy 中不可用。

Scrapy 使用 parsel 进行解析,后者又使用 lxml,后者仅支持 XPath 1.0。
但是,它支持EXSLT 命名空间中的正则表达式

由于 regex 命名空间在 scrapy 中默认启用,您可以这样做:

event = response.xpath('//p[re:match(text(), "\d+\s\(\w{3}\)")]')


查看完整回答
反对 回复 2021-08-24
  • 2 回答
  • 0 关注
  • 174 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号