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