簡體   English   中英

我如何使用lxml和python遍歷 <body> html文檔及其子元素

[英]How do I use lxml and python to traverse the <body> of a html document along with its children

我想獲取一個html文檔,並使用其子元素遍歷該文檔的<body>部分。 我看到了很多通過xpath或標記名獲取子樹的示例,但這似乎沒有給孩子。

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

我只想要

page title /html/body/h1
some text /html/body/p

非常感謝任何幫助。

我有類似的困難,然后我發現每個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)

看來您的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>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM