【发布时间】:2021-10-22 20:19:21
【问题描述】:
我正在学习 python 和 lxml 工具包。我需要处理本地目录中的多个 .htm 文件(递归)并删除不需要的标签,包括其内容(ID 为“box”、“columnRight”、“adbox”、footer”、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页面example.
【问题讨论】:
-
目前还不清楚是什么问题。您无法解析 HTML 文件吗?见lxml.de/tutorial.html#parsing-from-strings-and-files
-
@mzjn 我不确定在我的特定情况下正确的语法,因为示例太抽象了。
-
语法是什么?第一个 sn-p 不是关于清理 HTML,而是关于遍历目录以查找文件。第二个是尝试从
xpath()返回的列表中删除元素。你到底在纠结什么? -
我需要递归遍历一个目录,找到所有 .htm 文件,然后使用一些东西来检索 htm 页面并对其进行解析,以删除目标元素。第一个 sn-p 不适合这个目的,所以我编辑了。我不知道如何继续,列出一个树元素,
tree = html.parse(path)并加入第二个 sn-p。
标签: python xpath html-parsing lxml lxml.html