我尝试使用scrapy、xpath和regex来获取这个website。 我已经检查并尝试了这个问题的答案: xpath+ regex: matches text
我想创造一个scrapy.selector.unified.SelectorList'of <p>
,其中包含文本“11(sun)”或“9(fri)”等,并在列表中循环。在
event = response.xpath('//p[matches(text(), "\d+\s\(\w{3}\)")]').extract()
不起作用。在
仅供参考,下面确实有用。在
^{pr2}$我错过了什么?在
您可以使用
re()
代替extract()
为此列表中的每个元素调用.re()方法,并以unicode字符串列表的形式返回其结果。 .re()返回unicode字符串列表。所以不能构造嵌套的.re()调用。在event = response.xpath('//p/text()').extract("\d+\s\(\w{3}\)")
注意:re()解码HTML实体(除<;和&;)。在
有关更多信息,请参阅此处的文档:https://doc.scrapy.org/en/latest/topics/selectors.html#scrapy.selector.SelectorList.re
如果你只想看短信,那么Karan Verma的回答就足够了。
如果你在寻找元素本身,继续阅读。在
matches
仅在XPath 2.0及更高版本中可用(其他regex函数也是如此),在scrapy中不可用。在Scrapy使用parsel进行解析,后者使用lxml进行解析,lxml只支持XPath 1.0。
但是,它确实支持regular expressions in the EXSLT namespace
由于在scray中默认启用了regex命名空间,因此可以执行以下操作:
相关问题 更多 >
编程相关推荐