在.Net中,我找到了这个很棒的库,HtmlAgilityPack,它允许您使用XPath轻松解析非格式良好的HTML.我已经在我的.Net站点中使用了这几年,但是我不得不为我的Python,Ruby和其他项目解决更多痛苦的库.是否有人知道其他语言的类似库?
我很惊讶没有提到lxml.它速度极快,可以在允许CPython库的任何环境中工作.
以下是使用lxml通过XPATH解析HTML的方法.
>>> from lxml import etree >>> doc = '' >>> tree = etree.HTML(doc) >>> r = tree.xpath('/foo/bar') >>> len(r) 1 >>> r[0].tag 'bar' >>> r = tree.xpath('bar') >>> r[0].tag 'bar'
在python中,ElementTidy解析标签汤并生成一个元素树,允许使用XPath进行查询:
>>> from elementtidy.TidyHTMLTreeBuilder import TidyHTMLTreeBuilder as TB >>> tb = TB() >>> tb.feed("Hello world") >>> e= tb.close() >>> e.find(".//{http://www.w3.org/1999/xhtml}p")
BeautifulSoup是一个很好的Python库,用于以干净的方式处理凌乱的HTML.
我用过的最稳定的结果一直是使用lxml.html的soupparser.您需要安装python-lxml和python-beautifulsoup,然后您可以执行以下操作:
from lxml.html.soupparser import fromstring tree = fromstring('here!') matches = tree.xpath("./mal[@form=ed]")