基于 wget
和 Python 清理 HTML 内容的自动化脚本
网页爬取常需清理冗余 HTML(标签、脚本、样式、注释)以提取纯净文本。本文介绍结合 wget
下载和 Python 脚本清理 HTML 的自动化流程。
1. 使用 wget
下载网页
wget
是命令行下载工具,适合抓取网页。
命令示例:
sh
wget -c -r -npH -k -nv <URL>
参数说明:
-c
:断点续传。-r
:递归下载。-np
:不追溯父目录。-H
:下载外部文件。-k
:转换本地链接。-nv
:静默模式,仅显示进度。
2. 使用 Python 清理 HTML 文件
下载的 HTML 含大量冗余。可用 Python 脚本清理。以下脚本利用正则表达式移除注释、脚本、样式和标签,提取纯文本。
python
from glob import glob
import re
import sys
def clean_html_with_re(html_content):
COMMENT_REGEX = re.compile(r'<!--.*?-->', re.DOTALL) # HTML注释
SCRIPT_STYLE_REGEX = re.compile(r'<(script|style)\b[^>]*>.*?</\1>', re.DOTALL | re.IGNORECASE) # script和style标签
TAG_REGEX = re.compile(r'<.*?>', re.DOTALL) # 所有HTML标签
text = COMMENT_REGEX.sub('', html_content)
text = SCRIPT_STYLE_REGEX.sub('', text)
text = TAG_REGEX.sub('', text)
text = re.sub(r'\s+', ' ', text).strip() # 合并多余空白,去首尾空格
return text
# 输入文件夹路径作为第一个命令行参数
in_dir = sys.argv[1]
# 输出文件路径作为第二个命令行参数
out_file = sys.argv[2]
with open(out_file, 'w', encoding='utf-8') as fp:
# 遍历指定目录及其子目录下的所有HTML文件
for item in glob(f'{in_dir}/**/*.html', recursive=True):
with open(item, 'r', encoding='utf-8') as fr:
fp.write(clean_html_with_re(fr.read())) # 清理并写入
脚本解释:
clean_html_with_re
: 使用正则移除注释、<script>
、<style>
及其他标签,合并多余空格。glob
: 遍历指定目录及其子目录下的所有 HTML 文件。- 将清理结果写入输出文件。
3. 执行流程
- 使用
wget
下载网页。 - 使用 Python 脚本清理 HTML 文件。
- 将纯文本保存到输出文件。