python ,使用xpath取得范围,如何继续提取下一级的内容,代码示例
时间: 2024-09-22 12:10:03 浏览: 68
python3使用scrapy生成csv文件代码示例
在Python中,我们可以使用`lxml`或`selenium`库中的XPath功能来处理XML或HTML文档,并递归地提取内容。这里以`lxml`为例,假设我们有一个包含嵌套元素的HTML字符串:
```python
from lxml import etree
# 假设我们有这样一个HTML字符串
html = '''
<html>
<body>
<ul>
<li>Item 1
<ul>
<li>Sub-item 1</li>
<li>Sub-item 2</li>
</ul>
</li>
<li>Item 2</li>
</ul>
</body>
</html>
'''
# 使用lxml解析HTML
root = etree.fromstring(html)
# 定义一个函数来递归提取元素
def extract_content(element, level=0):
content = element.text.strip() if element.text else ''
for child in element.getchildren():
new_level = level + 1
content += f"\n{' ' * new_level}{child.text}{' - ' if child.tail else ''}"
content += extract_content(child, new_level) # 递归提取子元素
return content
# 获取并打印第一级列表项及其子项
item_list = root.xpath('//ul/li')
for item in item_list:
print(extract_content(item))
```
在这个例子中,`extract_content`函数会根据指定的层级`level`来添加缩进,并递归地查找每个子元素。运行此代码将输出每个列表项及其子项的内容。
阅读全文