【问题标题】:Extract URL where text matches a regex - with XPath 1.0提取文本匹配正则表达式的 URL - 使用 XPath 1.0
【发布时间】:2011-09-18 04:20:06
【问题描述】:

我想在 Scrapy 中使用 XPath 提取这种类型的 URL(链接文本是具有任意位数的数字,href 是随机文本)。

  • <a href="http://www.example.com/link_to_some_page.html>3</a>
  • <a href="http://www.example.com/another_link-abcd.html>45</a>

我可以想到类似的东西

HtmlXPathSelector(response).select('//a[matches(text(),"\d+")]/@href')

但是,XPath 2.0 似乎不受支持,我无法使用正则表达式。

我能搜索到的最好的单行解决方案来自这个问题:xpath expression for regex-like matching? -scrapy 有没有更好的方法来实现这一点?

【问题讨论】:

    标签: python regex xpath lxml scrapy


    【解决方案1】:
    .select('//a[. != "" and translate(., "0123456789", "") = ""]/@href')
    

    【讨论】:

    • +1 聪明的答案。 @Tomalak 在忽略 Xpath 1.0 中的大小写的情况下如何精确匹配字符串?例如。如果我的字符串是“下一个”。我会使用类似 (r"^next$", re.I) 的东西。如果没有正则表达式,我该怎么做?
    • @buffer:这已经被问过好几次了。只是搜索它。 ;) - 顺便说一句,另一个变体是 ... and string(number(.)) != 'NaN',但它会接受“仅限数字”之外的数字符号。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-10-10
    • 2011-09-27
    • 2011-01-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多