当前位置:  开发笔记 > 编程语言 > 正文

通过XPath解析HTML

如何解决《通过XPath解析HTML》经验,为你挑选了4个好方法。

在.Net中,我找到了这个很棒的库,HtmlAgilityPack,它允许您使用XPath轻松解析非格式良好的HTML.我已经在我的.Net站点中使用了这几年,但是我不得不为我的Python,Ruby和其他项目解决更多痛苦的库.是否有人知道其他语言的类似库?



1> Jagtesh Chad..:

我很惊讶没有提到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'


并不意味着你可以回答它.理想情况下,即使经过很长一段时间,最好的答案也会冒出来.顺便说一句,你的答案只解析XML,而不是HTML.你应该包含一个`HTMLParser`实例.

2> Aaron Maenpa..:

在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解析器代替lxml,因为elementtidy将阻塞未声明的命名空间.我学到了很多东西!

3> Ned Batcheld..:

BeautifulSoup是一个很好的Python库,用于以干净的方式处理凌乱的HTML.


BeautifulSoup不使用xpath :)

4> Gareth David..:

我用过的最稳定的结果一直是使用lxml.html的soupparser.您需要安装python-lxml和python-beautifulsoup,然后您可以执行以下操作:

from lxml.html.soupparser import fromstring
tree = fromstring('here!')
matches = tree.xpath("./mal[@form=ed]")

推荐阅读
勤奋的瞌睡猪_715
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有