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 的部分字符,然后加扩展啊

