如何从HTML中提取元素id属性值

时间:2008-12-12 13:08:13

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

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

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

例如,如果HTML是:
< input name =“ctl00 $ Header $ Search $ Keywords”type =“text”maxlength =“50”class =“search”/>

我希望输出类似于:
NAME = “ctl00 $头$搜索$关键词”
更高级的搜索也可能包括元素名称(例如控件类型):
输入| name =“ctl00 $ Header $ Search $ Keywords”

为了处理Id和Name属性,我只需重新运行搜索,查找Id而不是Name(即我不需要同时搜索两者的内容)。

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

4 个答案:

答案 0 :(得分:1)

又快又脏:

搜索

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

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

答案 1 :(得分:0)

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

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

答案 2 :(得分:0)

回答我自己的问题,最简单的方法是使用BeautifulSoup,这是一个'脏HTML'Python解析器,其标语是:

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

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

答案 3 :(得分:-1)

我建议使用xpath,如此question