Python模式匹配

时间:2010-11-19 17:23:21

标签: python regex

4 个答案:

答案 0 :(得分:4)

你不会自己解析HTML。您将使用python中构建的html解析器来解析html。

答案 1 :(得分:2)

您可以使用xxs

轻松地使用lxml提取您正在寻找的值

实施例

from lxml import html
page = html.fromstring(open("um.htm", "r").read())
matches = page.xpath("//a[contains(@title, 'pm.') or contains(@title, 'ol')]/span")
print [elem.text for elem in matches]

答案 2 :(得分:1)

使用:

使用正则表达式解析HTML是一种灾难。

答案 3 :(得分:1)

使用正则表达式无法可靠地匹配HTML。通常可以将一些适用于特定页面的内容拼凑在一起,但这是不可取的,因为即使对源HTML进行微妙调整也会使您的所有工作无效。 HTML只是比Regex能够描述的结构更复杂。

正确的解决方案是使用专用的HTML解析器。请注意,即使是XML解析器也无法满足您的需求,无论如何都不可靠。有效的XHTML是有效的XML,但即使它非常相似,即使是有效的HTML也不是。无论如何,有效的HTML / XHTML几乎不可能在野外找到。

有几种不同的HTML解析器可用:

  • BeautifulSoup不在标准库中,但它是最宽容的解析器,它可以处理几乎所有的真实HTML,并且它的设计完全符合您的目的。
  • HTMLParser包含在Python标准库中,但对于仅接受有效的HTML非常严格。
  • htmllib也在标准库中,但已弃用。

正如其他人所说,BeautifulSoup几乎肯定是您的最佳选择。