正则表达式提取数据

时间:2012-02-04 20:00:31

标签: html regex

如果我必须从HTML页面源中提取某些属性的值。例如:

如果我想获得地址的价值?

    <span class="address">413 W. Street</span></span><br>
编辑:对不起,我理解这个问题不对。 我试着删除这个问题但是没能。我在这里发布了一个新问题: https://stackoverflow.com/questions/9144544/regular-expressions-for-different-attributes

3 个答案:

答案 0 :(得分:1)

使用正则表达式从原始html中抓取数据有点困难,因为不同站点的模式可能会发生变化。使用可以浏览DOM树的东西更容易。

如果你正在使用python,你可以使用BeautifulSoup。这是文档。它完全符合你的要求。 Link

答案 1 :(得分:0)

这是一个python代码。

>>> import re
>>> s = '<span class="address">413 W. Street</span><br><span class="phone">218-999-1020</span>, <span class="region">WA</span> <span class="postal-code">87112</span><br>'
>>> re.findall(r'address">(.*?)<.*phone">(.*?)<.*region">(.*?)<.*postal-code">(.*?)<', s)
[('413 W. Street', '218-999-1020', 'WA', '87112')]
>>> 

BTW, don't forget to see this

答案 2 :(得分:0)

您不应该使用正则表达式来解析html。这里有很好的解释:

RegEx match open tags except XHTML self-contained tags

但是,如果您知道要解析的html文本的确切结构,可以尝试使用此正则表达式(为C#程序准备,因此可能因您的代码语言而异):

\<span[^">]*class="([^"]+)[^>]*>([^<]*)

然后您可以访问第一个匹配组中的类名称(例如地址,电话等),以及第二个匹配组中的值。