Python中如何将下载的原始HTML里的图片标签替换成指定内容?

如题,Python 爬虫,想把图片标签替换成类似这种,按图片顺序标号。

现在只能想到正则 search,查到一个 sub 替换一个,有啥更好的实现方式吗?

重复的 url 不需要去重,标号直接累加就好


Python中如何将下载的原始HTML里的图片标签替换成指定内容?
2 回复
import re
from typing import Optional

def replace_img_tags(html_content: str, replacement: str = "[图片]") -> str:
    """
    将HTML中的<img>标签替换为指定内容
    
    Args:
        html_content: 原始HTML字符串
        replacement: 要替换成的文本,默认为"[图片]"
    
    Returns:
        替换后的HTML字符串
    """
    # 使用正则表达式匹配<img>标签
    # 匹配模式解释:
    # <img\s+    匹配<img加至少一个空白字符
    # [^>]*      匹配除>外的任意字符0次或多次
    # >          匹配结束的>
    pattern = r'<img\s+[^>]*>'
    
    # 使用re.sub进行替换
    result = re.sub(pattern, replacement, html_content, flags=re.IGNORECASE)
    
    return result

# 使用示例
if __name__ == "__main__":
    # 示例HTML内容
    sample_html = """
    <html>
        <body>
            <h1>网页标题</h1>
            <p>这是一段文字。</p>
            <img src="image1.jpg" alt="图片1" width="100" height="100">
            <p>这是另一段文字。</p>
            <img src="image2.png" alt="图片2">
            <div>
                <img src="image3.gif" class="thumbnail">
            </div>
        </body>
    </html>
    """
    
    # 替换所有<img>标签为"[图片]"
    replaced_html = replace_img_tags(sample_html)
    print("替换后的HTML:")
    print(replaced_html)
    
    # 也可以自定义替换文本
    custom_replaced = replace_img_tags(sample_html, "[此处原为图片]")
    print("\n自定义替换文本:")
    print(custom_replaced)

这个函数使用正则表达式匹配所有的<img>标签,无论它们包含什么属性(src、alt、width、height、class等),都会整个标签被替换成指定的文本。

关键点:

  • re.IGNORECASE标志确保匹配不区分大小写(也能匹配<IMG>
  • 模式[^>]*匹配除>外的所有字符,确保匹配完整的标签
  • 函数有类型注解和清晰的文档字符串

注意: 这个方法适用于简单的HTML处理。如果需要处理更复杂的HTML(如嵌套标签、注释中的img标签等),建议使用专门的HTML解析库如BeautifulSoup。

一句话建议:用正则匹配<img[^>]*>然后替换就行。


那你就截取 url 的部分字符,然后加扩展啊

回到顶部