2026年9月21日

保存网页图片这件事,听起来简单,做起来却很烦。右键一张张另存为太慢;整页截图又糊、又裁不干净;浏览器扩展则常常把缩略图、图标和真正的内容图混在一起。

Image Downloader 是一个很小的 Python 工具:打开网页,抽出图片地址,优先拿页面已经给出的最高清版本,再存到本地。它不为了“尽可能大”去伪造签名链接,也不默认改你的图片参数。

它不追求全能爬虫,也不假装能突破登录墙。如果你经常需要把某几页上的配图备份下来,它刚好够用。

项目地址→ Github

它到底做什么

给它一个或多个网页地址,它会依次完成这些步骤:

  1. 从你粘贴的文本里识别 HTTP / HTTPS 网址,自动清理末尾标点并去重。

  2. 请求页面 HTML。Pixiv 作品页会走插画接口拿全部原图;其他站点用 BeautifulSoup 找 <img>

  3. 在普通页面上,优先使用 data-fulldata-hiressrcset,或指向图片文件的父级链接;没有更好地址时才回退到 src / data-src

  4. 跳过 data: 内嵌图。同一张图出现多种尺寸时,只保留质量最高的那一个。

  5. 默认按原始图片链接下载。只有你主动选择改参数时,才会替换或追加查询字符串。

  6. 文件保存到 downloaded_images 目录,遇到重名会自动加前缀,避免覆盖。单张失败会跳过,同一页其余图片继续下。

关键设计是:网页地址永远不会被改写;图片地址默认也不改。 下载时会带上源页面作为 Referer,这对 Pixiv 这类图床尤其重要。

针对几个站点的额外处理

Pixiv

遇到 /artworks/{id} 作品页时,工具会请求插画元数据,拼出全部 img-original 原图地址,而不是页面上的缩略图。多页作品会按页下载。

note.com

对于 assets.st-note.com/img/ 的图片,会改写成点击放大时使用的 CDN 参数:约 4000 像素、质量 90。同一资源路径只保留一个版本。

Patreon

Patreon 的媒体地址是签名过的。工具会优先使用页面真实提供的点击原图链接(来自包围图片的 <a> 或页面内嵌数据),并原样保留访问令牌。它不会伪造新的签名 URL,也不会改写 Patreon 的查询参数。只有 hash、没有过期时间的链接会被跳过。

可选:改图片链接参数

开始下载前,程序会问要不要修改图片 URL 的查询参数。直接回车或选 n,就按原始链接下载。选 y 后,可以输入一组参数,例如:

caw=1920&format=webp

已有同名参数会被替换,新参数会被追加。页面网址不会被动;已签名的 Patreon 媒体地址也不会被改。

https://example.com/a.jpg?caw=500
https://example.com/a.jpg?caw=1920&format=webp

两种运行方式

交互式:适合临时粘贴一批链接

启动控制台后,每行输入一个网址,也可以一次粘贴含多个网址的文本。空行确认后继续:

python run.py
Enter one or more webpage URLs.
URL> https://example.com/page-one
URL> https://example.com/page-two
URL

无效文本会被忽略,重复网址只处理一次。全部完成后,文件在 downloaded_images 目录里。

源文件模式:适合固定清单反复跑

把网址写进 do.py 顶部的 RAW_TEXT,然后运行:

python do.py

两种入口共用同一套提取、选图、询问改参和下载逻辑,差别只在网址从哪来。

安装

需要 Python 3.13 或更高版本,以及能访问目标网页和图片服务器的网络。依赖很少:requests 负责请求,beautifulsoup4 负责解析 HTML。

python -m venv .venv
.\.venv\Scripts\Activate.ps1
python -m pip install --upgrade pip
python -m pip install -e

如果 PowerShell 禁止激活虚拟环境脚本,先在当前会话执行:

Set-ExecutionPolicy -Scope Process -ExecutionPolicy RemoteSigned
.\.venv\Scripts\Activate.ps1

可以改的配置

都在 do.py 文件顶部:

  • SAVE_DIR:本地保存目录,默认 downloaded_images

  • HEADERS:请求头。默认带常见浏览器 User-Agent;个别站点如果校验来源,可以打开注释里的 Referer

它不会做的事

部分网站会拦截自动化请求,或要求登录后才能看到图片。这个工具不会绕过这些限制。仅登录可见的 Pixiv 或 Patreon 内容,在页面本身无法公开访问时会失败。

它主要认页面里的 <img> 和少数站点接口,不会去解 CSS 背景图,也不会猜测需要额外登录态才能拿到的资源。

把它当成一个诚实的小助手:给你能访问的页面,它帮你把最高清的那张捞下来;遇到墙,它会告诉你失败,而不是假装成功。

适合谁用

  • 需要把参考页、作品页或图文稿里的配图批量存档的人。

  • 经常从 Pixiv、note.com 或 Patreon 公开页备份原图,又不想为一次性任务写完整爬虫的人。

  • 已经有一串乱七八糟的文本,只想从中抽出网址再下载的人。

2026年9月21日

保存网页图片这件事,听起来简单,做起来却很烦。右键一张张另存为太慢;整页截图又糊、又裁不干净;浏览器扩展则常常把缩略图、图标和真正的内容图混在一起。

Image Downloader 是一个很小的 Python 工具:打开网页,抽出图片地址,优先拿页面已经给出的最高清版本,再存到本地。它不为了“尽可能大”去伪造签名链接,也不默认改你的图片参数。

它不追求全能爬虫,也不假装能突破登录墙。如果你经常需要把某几页上的配图备份下来,它刚好够用。

项目地址→ Github

它到底做什么

给它一个或多个网页地址,它会依次完成这些步骤:

  1. 从你粘贴的文本里识别 HTTP / HTTPS 网址,自动清理末尾标点并去重。

  2. 请求页面 HTML。Pixiv 作品页会走插画接口拿全部原图;其他站点用 BeautifulSoup 找 <img>

  3. 在普通页面上,优先使用 data-fulldata-hiressrcset,或指向图片文件的父级链接;没有更好地址时才回退到 src / data-src

  4. 跳过 data: 内嵌图。同一张图出现多种尺寸时,只保留质量最高的那一个。

  5. 默认按原始图片链接下载。只有你主动选择改参数时,才会替换或追加查询字符串。

  6. 文件保存到 downloaded_images 目录,遇到重名会自动加前缀,避免覆盖。单张失败会跳过,同一页其余图片继续下。

关键设计是:网页地址永远不会被改写;图片地址默认也不改。 下载时会带上源页面作为 Referer,这对 Pixiv 这类图床尤其重要。

针对几个站点的额外处理

Pixiv

遇到 /artworks/{id} 作品页时,工具会请求插画元数据,拼出全部 img-original 原图地址,而不是页面上的缩略图。多页作品会按页下载。

note.com

对于 assets.st-note.com/img/ 的图片,会改写成点击放大时使用的 CDN 参数:约 4000 像素、质量 90。同一资源路径只保留一个版本。

Patreon

Patreon 的媒体地址是签名过的。工具会优先使用页面真实提供的点击原图链接(来自包围图片的 <a> 或页面内嵌数据),并原样保留访问令牌。它不会伪造新的签名 URL,也不会改写 Patreon 的查询参数。只有 hash、没有过期时间的链接会被跳过。

可选:改图片链接参数

开始下载前,程序会问要不要修改图片 URL 的查询参数。直接回车或选 n,就按原始链接下载。选 y 后,可以输入一组参数,例如:

caw=1920&format=webp

已有同名参数会被替换,新参数会被追加。页面网址不会被动;已签名的 Patreon 媒体地址也不会被改。

https://example.com/a.jpg?caw=500
https://example.com/a.jpg?caw=1920&format=webp

两种运行方式

交互式:适合临时粘贴一批链接

启动控制台后,每行输入一个网址,也可以一次粘贴含多个网址的文本。空行确认后继续:

python run.py
Enter one or more webpage URLs.
URL> https://example.com/page-one
URL> https://example.com/page-two
URL

无效文本会被忽略,重复网址只处理一次。全部完成后,文件在 downloaded_images 目录里。

源文件模式:适合固定清单反复跑

把网址写进 do.py 顶部的 RAW_TEXT,然后运行:

python do.py

两种入口共用同一套提取、选图、询问改参和下载逻辑,差别只在网址从哪来。

安装

需要 Python 3.13 或更高版本,以及能访问目标网页和图片服务器的网络。依赖很少:requests 负责请求,beautifulsoup4 负责解析 HTML。

python -m venv .venv
.\.venv\Scripts\Activate.ps1
python -m pip install --upgrade pip
python -m pip install -e

如果 PowerShell 禁止激活虚拟环境脚本,先在当前会话执行:

Set-ExecutionPolicy -Scope Process -ExecutionPolicy RemoteSigned
.\.venv\Scripts\Activate.ps1

可以改的配置

都在 do.py 文件顶部:

  • SAVE_DIR:本地保存目录,默认 downloaded_images

  • HEADERS:请求头。默认带常见浏览器 User-Agent;个别站点如果校验来源,可以打开注释里的 Referer

它不会做的事

部分网站会拦截自动化请求,或要求登录后才能看到图片。这个工具不会绕过这些限制。仅登录可见的 Pixiv 或 Patreon 内容,在页面本身无法公开访问时会失败。

它主要认页面里的 <img> 和少数站点接口,不会去解 CSS 背景图,也不会猜测需要额外登录态才能拿到的资源。

把它当成一个诚实的小助手:给你能访问的页面,它帮你把最高清的那张捞下来;遇到墙,它会告诉你失败,而不是假装成功。

适合谁用

  • 需要把参考页、作品页或图文稿里的配图批量存档的人。

  • 经常从 Pixiv、note.com 或 Patreon 公开页备份原图,又不想为一次性任务写完整爬虫的人。

  • 已经有一串乱七八糟的文本,只想从中抽出网址再下载的人。

2026年9月21日

保存网页图片这件事,听起来简单,做起来却很烦。右键一张张另存为太慢;整页截图又糊、又裁不干净;浏览器扩展则常常把缩略图、图标和真正的内容图混在一起。

Image Downloader 是一个很小的 Python 工具:打开网页,抽出图片地址,优先拿页面已经给出的最高清版本,再存到本地。它不为了“尽可能大”去伪造签名链接,也不默认改你的图片参数。

它不追求全能爬虫,也不假装能突破登录墙。如果你经常需要把某几页上的配图备份下来,它刚好够用。

项目地址→ Github

它到底做什么

给它一个或多个网页地址,它会依次完成这些步骤:

  1. 从你粘贴的文本里识别 HTTP / HTTPS 网址,自动清理末尾标点并去重。

  2. 请求页面 HTML。Pixiv 作品页会走插画接口拿全部原图;其他站点用 BeautifulSoup 找 <img>

  3. 在普通页面上,优先使用 data-fulldata-hiressrcset,或指向图片文件的父级链接;没有更好地址时才回退到 src / data-src

  4. 跳过 data: 内嵌图。同一张图出现多种尺寸时,只保留质量最高的那一个。

  5. 默认按原始图片链接下载。只有你主动选择改参数时,才会替换或追加查询字符串。

  6. 文件保存到 downloaded_images 目录,遇到重名会自动加前缀,避免覆盖。单张失败会跳过,同一页其余图片继续下。

关键设计是:网页地址永远不会被改写;图片地址默认也不改。 下载时会带上源页面作为 Referer,这对 Pixiv 这类图床尤其重要。

针对几个站点的额外处理

Pixiv

遇到 /artworks/{id} 作品页时,工具会请求插画元数据,拼出全部 img-original 原图地址,而不是页面上的缩略图。多页作品会按页下载。

note.com

对于 assets.st-note.com/img/ 的图片,会改写成点击放大时使用的 CDN 参数:约 4000 像素、质量 90。同一资源路径只保留一个版本。

Patreon

Patreon 的媒体地址是签名过的。工具会优先使用页面真实提供的点击原图链接(来自包围图片的 <a> 或页面内嵌数据),并原样保留访问令牌。它不会伪造新的签名 URL,也不会改写 Patreon 的查询参数。只有 hash、没有过期时间的链接会被跳过。

可选:改图片链接参数

开始下载前,程序会问要不要修改图片 URL 的查询参数。直接回车或选 n,就按原始链接下载。选 y 后,可以输入一组参数,例如:

caw=1920&format=webp

已有同名参数会被替换,新参数会被追加。页面网址不会被动;已签名的 Patreon 媒体地址也不会被改。

https://example.com/a.jpg?caw=500
https://example.com/a.jpg?caw=1920&format=webp

两种运行方式

交互式:适合临时粘贴一批链接

启动控制台后,每行输入一个网址,也可以一次粘贴含多个网址的文本。空行确认后继续:

python run.py
Enter one or more webpage URLs.
URL> https://example.com/page-one
URL> https://example.com/page-two
URL

无效文本会被忽略,重复网址只处理一次。全部完成后,文件在 downloaded_images 目录里。

源文件模式:适合固定清单反复跑

把网址写进 do.py 顶部的 RAW_TEXT,然后运行:

python do.py

两种入口共用同一套提取、选图、询问改参和下载逻辑,差别只在网址从哪来。

安装

需要 Python 3.13 或更高版本,以及能访问目标网页和图片服务器的网络。依赖很少:requests 负责请求,beautifulsoup4 负责解析 HTML。

python -m venv .venv
.\.venv\Scripts\Activate.ps1
python -m pip install --upgrade pip
python -m pip install -e

如果 PowerShell 禁止激活虚拟环境脚本,先在当前会话执行:

Set-ExecutionPolicy -Scope Process -ExecutionPolicy RemoteSigned
.\.venv\Scripts\Activate.ps1

可以改的配置

都在 do.py 文件顶部:

  • SAVE_DIR:本地保存目录,默认 downloaded_images

  • HEADERS:请求头。默认带常见浏览器 User-Agent;个别站点如果校验来源,可以打开注释里的 Referer

它不会做的事

部分网站会拦截自动化请求,或要求登录后才能看到图片。这个工具不会绕过这些限制。仅登录可见的 Pixiv 或 Patreon 内容,在页面本身无法公开访问时会失败。

它主要认页面里的 <img> 和少数站点接口,不会去解 CSS 背景图,也不会猜测需要额外登录态才能拿到的资源。

把它当成一个诚实的小助手:给你能访问的页面,它帮你把最高清的那张捞下来;遇到墙,它会告诉你失败,而不是假装成功。

适合谁用

  • 需要把参考页、作品页或图文稿里的配图批量存档的人。

  • 经常从 Pixiv、note.com 或 Patreon 公开页备份原图,又不想为一次性任务写完整爬虫的人。

  • 已经有一串乱七八糟的文本,只想从中抽出网址再下载的人。