00284 将 html 转换为 markdown


前言

写一个将html转换为markdown的python脚本。

Operating System: Ubuntu 22.04.4 LTS

参考文档

  1. html2text

介绍

以下是一个使用Python将HTML转换为Markdown的脚本,基于成熟的html2text库实现:

#!/usr/bin/env python3
import html2text
import argparse
import sys

def html_to_markdown(html_content, **kwargs):
    """Convert HTML content to Markdown"""
    handler = html2text.HTML2Text()
    
    # 配置转换参数(可选)
    handler.body_width = kwargs.get("body_width", 0)       # 设置换行宽度(0表示不换行)
    handler.ignore_links = kwargs.get("ignore_links", False)
    handler.ignore_images = kwargs.get("ignore_images", False)
    handler.mark_code = kwargs.get("mark_code", True)
    
    return handler.handle(html_content)

def main():
    parser = argparse.ArgumentParser(description="HTML to Markdown Converter")
    parser.add_argument("-i", "--input", help="Input HTML file")
    parser.add_argument("-o", "--output", help="Output Markdown file")
    
    args = parser.parse_args()
    
    try:
        # 读取输入内容
        if args.input:
            with open(args.input, "r", encoding="utf-8") as f:
                html_content = f.read()
        else:
            print("Enter HTML content (Ctrl+D to finish):")
            html_content = sys.stdin.read()
        
        # 执行转换
        markdown_content = html_to_markdown(html_content)
        
        # 输出结果
        if args.output:
            with open(args.output, "w", encoding="utf-8") as f:
                f.write(markdown_content)
            print(f"Successfully converted to {args.output}")
        else:
            print(markdown_content)
            
    except Exception as e:
        print(f"Error: {str(e)}", file=sys.stderr)
        sys.exit(1)

if __name__ == "__main__":
    main()

使用说明

  1. 首先安装依赖库:

    pip install html2text
  2. 基本使用方法:

    # 转换文件
    python html2md.py -i input.html -o output.md
    
    # 从标准输入读取
    echo "<h1>Hello World</h1>" | python html2md.py
    
    # 交互式输入
    python html2md.py
    (输入HTML内容后按Ctrl+D)

主要功能特性

  1. 支持多种输入方式:

    • 文件输入
    • 标准输入
    • 命令行直接输入
  2. 可配置转换选项:

    # 示例:配置转换参数
    markdown_content = html_to_markdown(
        html_content,
        body_width=80,      # 自动换行
        ignore_links=True,   # 忽略超链接
        mark_code=False      # 不标记代码块
    )
  3. 支持保留以下HTML元素:

    • 标题(h1-h6)
    • 列表(有序/无序)
    • 代码块
    • 引用块
    • 表格
    • 图片链接
    • 文本格式(粗体、斜体等)

注意事项

  1. 复杂HTML结构可能无法完美转换,特别是:

    • 嵌套表格
    • 复杂CSS样式
    • JavaScript生成的内容
    • 自定义HTML标签
  2. 对于需要更高精度转换的场景,可以:

    • 调整html2text的配置参数
    • 结合BeautifulSoup进行预处理
    • 对转换结果进行后处理
  3. 建议在转换后人工检查格式是否符合预期

这个脚本提供了基础的HTML到Markdown的转换能力,可以处理大多数常见HTML元素的转换需求。对于更复杂的转换场景,可以考虑在现有基础上进行功能扩展。

结语

第二百八十四篇博文写完,开心!!!!

今天,也是充满希望的一天。


文章作者: LuYF-Lemon-love
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 LuYF-Lemon-love !
  目录