Skip to content

基于 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. 执行流程

  1. 使用 wget 下载网页。
  2. 使用 Python 脚本清理 HTML 文件。
  3. 将纯文本保存到输出文件。

Released under the MIT License.