我正在尝试抓取这个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/