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

标签 python regex xpath scrapy

我正在尝试抓取这个website使用 scrapy、xpath 和正则表达式。 我已经检查并尝试了这个问题的答案: xpath+ regex: matches text

我想创建一个 <p> 的“scrapy.selector.unified.SelectorList”包含文本“11(周日)”或“9(周五)”等,并循环遍历列表。

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

不起作用。

仅供引用,下面确实有效。

event = response.xpath('//p[contains(text(), "11 (sun)")]').extract()

我在这里缺少什么?

最佳答案

如果您只需要短信,Karan Verma 的回答就足够了。
如果您正在寻找元素本身,请继续阅读。

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

Scrapy 使用 parsel 进行解析,而 parsel 又使用 lxml,仅支持 XPath 1.0。
但是,它确实支持 regular expressions in the EXSLT namespace

由于 scrapy 中默认启用正则表达式命名空间,因此您可以执行以下操作:

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

关于python - 如何获取包含与正则表达式匹配的文本的 <p>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53409077/

相关文章:

regex - 在Google Analytics(分析)API过滤器中使用逗号时出现问题

php - PHP无法访问SimpleXMLElement对象的Xpath节点

python - 在两侧创建多个 y 轴

python - Keras 中一个模型的两个输入

python - 从文件直接读入二维列表python

java - 获取单引号或空格之间的字符串

python - Pandas 重采样函数问题从分钟到毫秒的重新采样

regex - 如何从Excel单元格中提取特定字符串?

java - 如何捕获 Selenium 中多个段落标签的所有换行文本?

c# - 如何使用 XPath 选择两个节点之间的所有元素