【问题标题】:How to extract element id attribute values from HTML如何从 HTML 中提取元素 id 属性值
【发布时间】:2008-12-12 13:08:12
【问题描述】:

我正在尝试计算 ASP.NET 自动命名服务器控件的开销。我有一个页面,其中包含从数百个嵌套的 ASP.NET 控件呈现的 7,000 行 HTML,其中许多具有长度为数百个字符的 id/name 属性。

理想情况下,我希望将每个以“ctl00”开头的 HTML 属性值提取到一个列表中。如果我知道正则表达式应该是什么,Notepad++ 中的正则表达式查找功能将是完美的?

例如,如果 HTML 是:

我希望输出类似于:
name="ctl00$Header$Search$Keywords"
更高级的搜索可能还包括元素名称(例如控件类型):
input|name="ctl00$Header$Search$Keywords"

为了同时处理 Id 和 Name 属性,我将简单地重新运行搜索以查找 Id 而不是 Name(即,我不需要同时搜索两者的东西)。

最终输出将是一个 Excel 报告,其中列出了页面上服务器控件的数量,以及每个名称的长度,可能按控件类型排序。

【问题讨论】:

    标签: asp.net html regex html-content-extraction


    【解决方案1】:

    又快又脏:

    搜索

    \w+\s*=\s*"ctl00[^"]*"
    

    这将匹配任何看起来像属性的文本,例如name="ctl00test"attr = "ctl00longer text"。它不会检查这是否真的发生在 HTML 标记中 - 这有点难做,也许是不必要的?它也不会检查标签名称中的转义引号。与正则表达式一样,所需的复杂性取决于您想要匹配的内容以及您的输入内容...

    【讨论】:

      【解决方案2】:

      “7000”? “数百”?亲爱的上帝。

      由于您只是在文本编辑器中查看源代码,请试试这个... /(id|name)="ct[^"]*"/

      【讨论】:

      • 同上。 aaaaaaaaaaaaa 和空间用于验证。
      【解决方案3】:

      回答我自己的问题,最简单的方法是使用 BeautifulSoup,它的标语是“脏 HTML”Python 解析器:

      “你没有写那个糟糕的页面。你只是想从中获取一些数据。现在,你并不真正关心 HTML 应该是什么样子。这个解析器也不关心。”

      它有效,并且可以从这里获得 - http://crummy.com/software/BeautifulSoup

      【讨论】:

        【解决方案4】:

        我建议使用 xpath,如question

        【讨论】:

        • XPath?在 HTML 页面上?既然他说它有 7000 行和数百个控件,那么您认为该页面符合 XHTML 的可能性有多大?大约为零?
        • 你也可以在html上使用xpath,你可以设置解析器不对文档进行严格验证
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2012-01-01
        • 1970-01-01
        • 2017-10-23
        • 1970-01-01
        • 1970-01-01
        • 2016-10-16
        • 1970-01-01
        相关资源
        最近更新 更多