首页 > 解决方案 > 在 Python 中使用 lxml 和 XPath 清理 HTML

问题描述

我正在学习 python 和 lxml 工具包。我需要处理本地目录中的多个 .htm 文件(递归)并删除不需要的标签,包括其内容(ID 为“box”、“columnRight”、“adbox”、页脚“、div class="box”的 div,以及所有样式表和脚本)。不知道该怎么做。我有列出目录中所有 .htm 文件的代码:

#!/usr/bin/python
import os
from lxml import html
import lxml.html as lh

path = '/path/to/directory'
for root, dirs, files in os.walk(path):
    for name in files:
        if name.endswith(".htm"):
        doc=lh.parse(filename)

所以我需要添加部分,创建一个树,处理 html 并删除不必要的 div,比如

for element in tree.xpath('//div[@id="header"]'):
    element.getparent().remove(element) 

如何为此调整代码?

html 页面示例

标签: pythonxpathhtml-parsinglxmllxml.html

解决方案


如果没有看到您的实际文件很难判断,但请尝试以下操作,看看它是否有效:

首先你不需要两者

from lxml import html
import lxml.html as lh

所以你可以放弃第一个。然后

for root, dirs, files in os.walk(path):
    for name in files:
        if name.endswith(".htm"):           
           tree = lh.parse(name)
           root = tree.getroot()
           for element in root.xpath('//div[@id="header"]'):
               element.getparent().remove(element) 

推荐阅读