【问题标题】:How to use regular expressions to pull a substring? (screen scraping)如何使用正则表达式提取子字符串? (屏幕抓取)
【发布时间】:2010-05-20 01:09:05
【问题描述】:

大家好,我真的很想在抓取网站时理解正则表达式,我一直在我的代码中使用它来获取以下内容,但我被困在这里。我需要快速抓住这个:

http://www.example.com/online/store/TitleDetail?detail&sku=123456789

从此:

('<a href="javascript:if(handleDoubleClick(this.id)){window.location=\'http://www.example.com/online/store/TitleDetail?detail&sku=123456789\';}" id="getTitleDetails_123456789">\r\n\t\t\t            \tcheck store inventory\r\n\t\t\t            </a>', 1)

这就是我感到困惑的地方。有什么想法吗?

编辑:每个产品的 sku 编号都会发生变化,所以这对我来说是个麻烦

【问题讨论】:

  • 你可能会发现 PyCon 2010 上的这个演讲很有趣 - pycon.blip.tv/file/3359320
  • 谢谢克里斯蒂安,我一直在看这个。但我没有找到像你提供的那样好的提要。干杯!

标签: python regex screen-scraping


【解决方案1】:
http://www\.example\.com/online/store/TitleDetail\?detail&sku=\d+

使用带有“Greedy”+ 的 \d 组来限定 sku 字段中的任何整数值

【讨论】:

    【解决方案2】:
    pattern = re.compile(r"window.location=\\'([^\\]*)")
    haystack = r"""<a href="javascript:if(handleDoubleClick(this.id)){window.location=\'http://www.example.com/online/store/TitleDetail?detail&sku=123456789\';}" id="getTitleDetails_123456789">\r\n\t\t\t\tcheck store inventory\r\n\t\t\t</a>"""
    url = re.search(pattern, haystack).group(1)
    

    【讨论】:

      【解决方案3】:

      你不需要正则表达式,只需使用字符串方法:

      result = html[0].split("window.location='")[1].split("'")[0]
      

      【讨论】:

        【解决方案4】:

        如果总是有 9 位数字

        http://www.example.com/online/store/TitleDetail?detail&sku=[0-9]{9}
        

        如果有任意位数:

        http://www.example.com/online/store/TitleDetail?detail&sku=[0-9]*
        

        更笼统:

        http*?sku=[0-9]*
        

        (*? 中的 ? 表示它会首先找到较短的匹配项,因此不太可能找到跨越多个 URL 的匹配项。)

        编辑:[0-9]。不是 [1-9]

        【讨论】:

          【解决方案5】:

          http://txt2re.com/ 可能会帮助你

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2021-09-25
            • 1970-01-01
            • 1970-01-01
            • 2010-10-14
            相关资源
            最近更新 更多