首页 > 解决方案 > 如何从网页中提取内容及其父 HTML 元素?

问题描述

假设您有一个网页:

<html>
<head>
<meta name="description" content="Hello World Test">
</head>
<body>
<h1>Hello World!!!</h1>
<p>How are you today?</p>
<p>What have you been up to?</p>
</body>
</html>

有没有办法循环遍历页面上的节点,然后,如果节点包含文本,则提取文本?

然后我想通过它的 Xpath 来组织文本。

所以上面将是:

/html/body/h1:世界你好!!!

/html/body/p[1]:你今天好吗?

/html/body/p[2]:你最近在做什么?

非常感谢

标签: pythonxpath

解决方案


您可以使用例如lxml库中的 XPath 来迭代所有 HTML 节点,如果迭代节点包含任何文本,则使用路径检索内容:

from lxml import html

tree = html.fromstring("""
<html>
 <head>
  <meta content="Hello World Test" name="description"/>
 </head>
 <body>
  <h1>Hello World!!!</h1>
  <p>How are you today?</p>
  <p>What have you been up to?</p>
 </body>
</html>
""")

for node in tree.iter():
    if node.text and node.text.strip():
        print(node.getroottree().getpath(node), node.text)

/html/body/h1 你好世界!!!

/html/body/p[1] 你今天好吗?

/html/body/p[2] 你在做什么?


推荐阅读