如何使用lxml和python遍历html文档及其子项

时间:2018-02-28 04:55:57

标签: python lxml

我想带一个html文档并遍历文档的projMatrix = matrix; 部分及其子项。我看到很多例子可以通过xpath或标签名称来获取子树,但这似乎并没有给孩子们。

<body>

这将输出

import lxml
from lxml import html, etree  

html3 = "<html><head><title>test<body><h1>page title</h3><p>some text</p>"
root = lxml.html.fromstring(html3)
tree = etree.ElementTree(root)
for el in root.iter():
    # do something
    print(el.text, tree.getpath(el))

我只想

None /html
None /html/head
test /html/head/title
None /html/body
page title /html/body/h1
some text /html/body/p

感激不尽的任何帮助。

2 个答案:

答案 0 :(得分:1)

我遇到了类似的困难,然后我想每个etree节点都有一个迭代器,如果它的父节点可以用来遍历

例如,root这里将为您提供身体使用,您可以迭代身体的每个元素

from lxml import etree
parser = etree.HTMLParser()
tree   = etree.parse('yourdocument.html', parser)

root = tree.xpath('/html/body/')[0]
for i in root.getiterator():
    print(i.tag,i.text)

答案 1 :(得分:0)

您的html代码似乎格式无效,我只是用beautifuSoup写了一个小程序,也许您可​​以根据自己的目的进行修改:

from bs4 import BeautifulSoup
html3 = "<html><head><title>test</title></head><body><h1>page title</h1><p>some text</p><body></html>"
soup = BeautifulSoup(html3, "html5lib")
body = soup.find('body')

for item in body.findChildren():
    print(item)

输出

<h1>page title</h1>
<p>some text</p>