【问题标题】:Extracting a content from HTML using regex in python在python中使用正则表达式从HTML中提取内容
【发布时间】:2016-08-01 01:31:53
【问题描述】:

我有这个 HTML 代码

<a class="button block left icon-phone" data-reveal="\u06f0\u06f9\u06f3\u06f6\u06f5\u06f6\u06f8\u06f1\u06f6\u06f2\u06f1"  href="#">

这是一个刺痛,我想提取 data-reveal 前面的内容。 我做了一些像

这样的正则表达式
p = re.compile('data-reveal=*')

但他们没有工作。我该怎么做 ? 谢谢。

【问题讨论】:

  • 数据前面的一切都暴露了,包括href="#"?你能发布你想要的确切结果吗?
  • BS4 是一个更好的选择..
  • data-reveal="([^"]*)" 如果您只想要 data-reveal 中的数据

标签: python html regex


【解决方案1】:

您不应该为此使用正则表达式,但我假设您想要这样做,因为这就是您在操作中所做的。我不确定你想要什么,所以这里是我认为你可能会问的任何一种方法

match everything in data-reveal:
data-reveal="(.+?)"
matches: \u06f0\u06f9\u06f3\u06f6\u06f5\u06f6\u06f8\u06f1\u06f6\u06f2\u06f1

match EVERYTHING in front of data-reveal
data-reveal="(.+)
matches: \u06f0\u06f9\u06f3\u06f6\u06f5\u06f6\u06f8\u06f1\u06f6\u06f2\u06f1"  href="#">

第一个正则表达式:https://regex101.com/r/jW9fT4/1

第二个正则表达式:https://regex101.com/r/uZ7vX2/1

【讨论】:

    【解决方案2】:

    您正在为此使用the wrong tool。您应该使用像 BeautifulSoup 这样的 Html 解析器。

    >>> from bs4 import BeautifulSoup
    >>> doc = """<a class="button block left icon-phone" data-reveal="\u06f0\u06f9\u06f3\u06f6\u06f5\u06f6\u06f8\u06f1\u06f6\u06f2\u06f1"  href="#">"""
    >>> soup = BeautifulSoup(doc, 'html.parser')
    >>> print(soup.find('a').get('data-reveal'))
    ۰۹۳۶۵۶۸۱۶۲۱
    

    【讨论】:

      【解决方案3】:

      试试这个:

      import re
      
      html = """<a class="button block left icon-phone" data-reveal="\u06f0\u06f9\u06f3\u06f6\u06f5\u06f6\u06f8\u06f1\u06f6\u06f2\u06f1"  href="#">"""
      
      regexObj = re.compile('data-reveal="(.*)" ')
      result = regexObj.search(html);
      print(result.group(1))
      

      输出:

      ۰۹۳۶۵۶۸۱۶۲۱
      

      【讨论】:

      • 嗨,仁,非常感谢您的回答。现在,当我打印输出时,它显示 utf-8 (\u06f0\u06f9\u06f3\u06f6\u06f5\u06f6\u06f8\u06f1\u06f6\u06f2\u06f1) 我怎样才能将其转换为显示 0936656611621 的纯文本?再次感谢。
      • 谢谢,我想通了,我应该使用 b'\u06f0\u06f9\u06f3\u06f6\u06f5\u06f6\u06f8\u06f1\u06f6\u06f2\u06f1'
      猜你喜欢
      • 1970-01-01
      • 2011-02-18
      • 2010-09-26
      • 1970-01-01
      • 1970-01-01
      • 2012-11-01
      • 2015-12-10
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多