如何用 Python 批量抓取并下载网站图片

最后更新于 May 26, 2026
How to use Python to scrape and download website images tutorial graphic

如今,网络已经变成了一片视觉丛林——每天都有数十亿张图片被上传,从电商商品目录到病毒式传播的表情包,什么都有。如果你从事销售、市场营销或研究工作,大概率都经历过一张张手动收集图片的繁琐过程。我也有过同样的经历,卡在“右键另存为”的循环里,忍不住想:难道没有更好的办法吗?剧透一下:有的。Python 图片爬虫和像 Thunderbit 这样的无代码工具,正在改变所有需要大规模从网站下载图片的人做事的方式。

在这篇指南里,我会带你了解如何使用 Python 进行网页图片爬取,如何应对那些棘手的动态网站,以及为什么把 Python 和 Thunderbit 结合起来,往往能同时兼顾效率与灵活性。无论你是在搭建商品目录、做竞品分析,还是单纯厌倦了复制粘贴,这里都能找到实用步骤、代码示例,还有一点轻松的调侃。

什么是 Python 图片爬虫?

Python 图片爬虫指的是一种脚本或工具,它能自动访问网站,查找图片文件(比如 <img> 标签中的图片),并把它们下载到你的电脑里。你不必一张张手动保存,Python 会帮你完成抓取网页、解析 HTML、批量保存文件这些繁琐工作(Thunderbit Python 图片爬虫教程)。

哪些人会用 Python 图片爬虫?几乎所有需要大量图片、而且还要得很快的人:

  • 电商团队:从供应商网站下载商品图片,用于搭建目录。
  • 营销人员:收集社交媒体图片,用于活动或趋势分析。
  • 研究人员:为 AI/机器学习项目或学术研究构建数据集。
  • 房产经纪人:整理房源图片,用于 listings 或市场分析。

你可以把 Python 图片爬虫看作你的数字实习生——只不过它不会无聊,也不会被猫咪表情包分心。

为什么用 Python 来爬取网页图片?

python-image-scraping-benefits.png Python 可以说是网页爬取领域的瑞士军刀。它之所以成为图片爬取的首选,原因如下:

  • 库生态丰富:Requests、BeautifulSoup、Selenium 等工具可以覆盖从基础 HTML 到复杂的 JavaScript 网站的各种场景(Oxylabs Python Web Scraping)。
  • 对新手友好:Python 语法清晰易懂,教程和社区支持也非常多。
  • 灵活且可扩展:你既可以爬单个页面,也可以抓取成千上万个页面,还能自动下载并在下载后处理图片。
  • 省时省钱:有基准测试显示,用 Python 抓取 100 张图片大约只需 12 分钟,而手动操作则要 2 个小时(Thunderbit Python 图片爬虫教程)。

下面来看看一些典型的业务场景:

使用场景手动操作的痛点Python 爬虫的优势
商品目录整理反复复制粘贴,耗时很长几分钟内批量下载成千上万张图片
竞品分析容易遗漏细节,速度慢批量并排比较图片
趋势研究数据集不完整收集大量且多样化的图片样本
AI/机器学习数据集构建标注过程繁琐自动采集,并为训练做准备
房源 listings数据分散且更新慢轻松集中管理并更新图片

Python 图片爬取必备工具

下面我们来拆解一下用于图片爬取的 Python 工具链:

库/工具作用适合场景优点缺点
Requests通过 HTTP 获取网页和图片静态网站简单、快速不负责 HTML 解析,不支持 JS
BeautifulSoup解析 HTML,查找 <img> 标签提取图片 URL易上手、容错性高不支持 JS
Scrapy功能完整的爬取/抓取框架大规模项目原生 async/await(2.14+),自带导出功能学习曲线更陡
Selenium自动化浏览器(可处理 JS、滚动)动态网站 / 重 JS 网站能渲染 JS,模拟用户操作更慢,配置更多
Pillow (PIL)下载后处理图片图片校验/编辑可调整尺寸、转换格式、检查图片本身不用于爬取

什么时候用什么工具?

  • 对大多数静态网站来说:requests + BeautifulSoup 是基础组合。
  • 对动态网站(无限滚动、JS 图集):Selenium 更合适。
  • 对大规模、可重复的项目:Scrapy 更有结构,也更高效。
  • 对图片处理:Pillow 可以帮你在下载之后做清理和加工。

分步骤:用 Python 从网站下载图片

我们来上手实操一下。下面演示如何用 Python 从静态网站下载图片。

搭建 Python 环境

首先,确保你已经安装了 Python 3。然后创建一个虚拟环境(可选,但推荐):

python3 -m venv venv
source venv/bin/activate  # Windows 上:venv\Scripts\activate

安装所需库:

pip install requests beautifulsoup4

查找并提取图片 URL

在浏览器中打开目标网站。右键选择“检查”,找到 <img> 标签——这些就是你的目标。

下面是一段用于抓取并解析图片 URL 的示例脚本:

import requests
from bs4 import BeautifulSoup
from urllib.parse import urljoin
import os

url = "https://example.com"
response = requests.get(url)
soup = BeautifulSoup(response.text, "html.parser")

img_tags = soup.find_all("img")
img_urls = [urljoin(url, img.get("src")) for img in img_tags if img.get("src")]

小提示: 有些网站会把懒加载图片放在 data-srcsrcset 里,记得也检查这些属性。

下载并保存图片

接下来把这些图片保存到文件夹里:

os.makedirs("images", exist_ok=True)

for i, img_url in enumerate(img_urls):
    try:
        img_resp = requests.get(img_url, headers={"User-Agent": "Mozilla/5.0"})
        if img_resp.status_code == 200:
            file_ext = img_url.split('.')[-1].split('?')[0]
            file_name = f"images/img_{i}.{file_ext}"
            with open(file_name, "wb") as f:
                f.write(img_resp.content)
            print(f"Downloaded {file_name}")
    except Exception as e:
        print(f"Failed to download {img_url}: {e}")

整理建议:

  • 尽量根据商品 ID 或页面标题来命名文件。
  • 不同分类或来源使用不同子文件夹。
  • 保存前先检查重复项(比较 URL 或使用哈希值)。

常见错误与排查方法

  • 找不到图片? 可能是通过 JavaScript 加载的,看看下一部分。
  • 请求被拦截? 设置真实一点的 User-Agent,并在下载间加入 time.sleep() 延迟。
  • 重复下载? 用一个集合记录已见 URL 或文件名。
  • 权限错误? 确认脚本对目标文件夹有写入权限。

如何抓取动态和重 JavaScript 页面中的图片

有些网站特别喜欢和你玩捉迷藏——图片通过 JavaScript、无限滚动或“加载更多”按钮展示出来。下面教你如何用 Selenium 应对这类页面。

用 Selenium 处理动态内容

安装 Selenium:

pip install selenium

就这么简单——从 Selenium 4.6 开始,Selenium Manager 会在你第一次启动浏览器时自动匹配并解析对应的 ChromeDriver,所以你不需要自己下载或折腾 PATH 配置。(如果你因为某些原因还在用 Selenium <4.6,可以从 Chrome for Testing 下载二进制文件。)

下面是一段基础的 Selenium 脚本:

from selenium import webdriver
from selenium.webdriver.common.by import By
import time
import os

driver = webdriver.Chrome()
driver.get("https://example.com/gallery")

# 向下滚动以加载更多图片
last_height = driver.execute_script("return document.body.scrollHeight")
while True:
    driver.execute_script("window.scrollTo(0, document.body.scrollHeight);")
    time.sleep(2)  # 等待图片加载
    new_height = driver.execute_script("return document.body.scrollHeight")
    if new_height == last_height:
        break
    last_height = new_height

img_elements = driver.find_elements(By.TAG_NAME, "img")
img_urls = [img.get_attribute("src") for img in img_elements if img.get_attribute("src")]

os.makedirs("dynamic_images", exist_ok=True)
for i, img_url in enumerate(img_urls):
    # (下载逻辑同前)
    pass

driver.quit()

实用建议:

  • 使用 WebDriverWait 等待图片出现。
  • 如果网站需要点击后才显示图片,可以用 element.click()

替代方案: 像 Playwright(Python 绑定)这样的工具,在复杂网站上可能更快,也更稳定(Scrapfly Guide)。

无代码替代方案:使用 Thunderbit 抓取网站图片

并不是每个人都想和代码、浏览器驱动器硬碰硬。这时候 Thunderbit 就派上用场了——这是一款无代码、AI 驱动的网页爬虫 Chrome 扩展,提取图片就像点外卖一样简单。

如何使用 Thunderbit 抓取图片 Get Started Free

如何用 Thunderbit 提取图片

  1. 安装 Thunderbit:获取 Thunderbit Chrome 扩展
  2. 打开目标网站:进入你想抓取图片的页面。
  3. 启动 Thunderbit:点击扩展图标,打开侧边栏。
  4. AI 建议字段:点击“AI Suggest Fields”——Thunderbit 的 AI 会自动扫描页面,识别图片,并为你生成一个“图片”列(Thunderbit 图片抓取指南)。
  5. 开始抓取:点击“Scrape”。Thunderbit 会收集所有图片,即使它们来自子页面或无限滚动页面也没问题。
  6. 导出:可直接将图片 URL 或文件导出到 Excel、Google Sheets、Notion、Airtable 或 CSV——免费版也不用额外付费。

免费试用 Thunderbit 图片提取器

额外福利: Thunderbit 的免费图片提取器只需点击一次,就能抓取页面上的所有图片 URL(Thunderbit Python 图片爬虫教程)。

Thunderbit 的优势:

  • 不需要编程,也不需要 HTML 知识。
  • 可自动处理动态内容、子页面和分页。
  • 导出即时且不限量(即使是免费计划也一样)。
  • AI 会自动适应网站变化,减少维护烦恼。

结合 Python 和 Thunderbit:两全其美

python-thunderbit-hybrid-workflow-diagram.png 我最喜欢的工作流是:用 Thunderbit 快速、无代码地提取图片,再用 Python 做自定义处理或自动化。

示例场景:

  • 搭建目录:先用 Thunderbit 从难处理的网站抓取图片,再用 Python 整理、重命名或处理文件。
  • AI 数据集制作:Thunderbit 从多个来源抓图;Python 脚本负责筛选、标注或扩充数据集。
  • 销售调研:Python 先爬取一批公司网址;Thunderbit 再从每个网站提取图片、邮箱或电话号码。

工作流清单:

  1. 用 Thunderbit 抓取图片并导出为 CSV。
  2. 在 Python 中加载 CSV,做进一步分析或自动化处理。
  3. 汇总多个来源的数据,形成统一报告。

这种混合方案让你同时拥有速度、灵活性,以及应对几乎任何网页图片抓取难题的能力。

Python 图片爬取的排错与最佳实践

常见问题:

  • 请求被拦截:设置 User-Agent,添加延迟,并遵守 robots.txt
  • 图片缺失:检查是否为 JS 加载内容——可以用 Selenium 或 Thunderbit。
  • 重复下载:跟踪已见 URL,或使用文件哈希值。
  • 文件损坏:下载后用 Pillow 验证图片是否完整。

最佳实践:

  • 用清晰的文件夹结构管理图片(按网站、分类或日期归档)。
  • 使用有描述性的文件名(商品 ID、页面标题等)。
  • 通过文件大小或分辨率过滤无关图片(如广告、图标)。
  • 抓取图片前,一定要确认版权和服务条款(Grepsr 图片抓取指南)。

对比 Python 图片爬虫方案:代码 vs 无代码

下面是你的可选方案对比:

比较维度Python(Requests/BS)Selenium(Python)Thunderbit(无代码)
易用性中等(需要写代码)更难(代码 + 浏览器自动化)非常容易(点选操作,AI 辅助)
动态内容支持
上手时间较长(安装、写代码)较长(驱动、代码)很短(安装扩展即可)
可扩展性手动扩展(可并行)较慢(浏览器开销)高(云端抓取,一次最多 50 页)
维护成本高(网站一变脚本就可能失效)低(AI 会自动适应)
导出方式自定义(CSV、数据库)自定义一键导出到 Excel、Sheets、Notion 等
成本免费(开源)免费有免费版,高用量需付费

结论: 如果你喜欢写代码,而且需要完全掌控流程,Python 无可替代。若你更看重速度、简单和动态网站处理能力,Thunderbit 简直是救星。对大多数团队来说,两者一起用效果最好。

结论与核心要点

网络视觉内容的爆发式增长,意味着图片数据比以往更有价值,也更让人应接不暇。Python 图片爬虫让你拥有自动化下载的能力和灵活性,而像 Thunderbit 这样的无代码工具,则让图片爬取变得人人可用。

核心要点:

  • 静态网站和自定义工作流,优先使用 Python(Requests + BeautifulSoup)。
  • 动态、重 JavaScript 页面,使用 Selenium。
  • 想要快速、无代码提取时,使用 Thunderbit——尤其适合难搞的网站,或需要立刻导出到 Excel、Google Sheets、Notion 的场景。
  • 把两者结合起来,获得终极工作流:Thunderbit 负责采集,Python 负责处理和自动化。

准备好升级你的图片爬取能力了吗?现在 Python 这边也更友好了——Selenium Manager 已经解决了旧式驱动下载的麻烦,而 Scrapy 2.14 也终于原生支持异步了——所以写一个 30 行脚本,真的只需要 10 分钟。或者你也可以直接跳过脚本,去免费安装 Thunderbit。如果你想深入了解,可以查看 Thunderbit BlogPython 图片爬虫教程


试用 Thunderbit AI 图片爬虫 Get Started Free

祝你抓图顺利,也愿你的图片文件夹永远井井有条!

常见问题

1. 什么是 Python 图片爬虫?
Python 图片爬虫是一种脚本或工具,它能自动访问网站,找到图片文件(通常在 <img> 标签中),并把它们下载到你的电脑里。这样你就不用一张一张手动保存了。

2. 用哪些 Python 库最适合爬取网页图片?
最常用的库包括 Requests(用于获取网页)、BeautifulSoup(用于解析 HTML)、Selenium(用于动态内容)以及 Pillow(用于下载后的图片处理)。

3. 如何抓取 JavaScript 很重或无限滚动网站上的图片?
可以用 Selenium 自动化浏览器、滚动页面,并在所有内容加载完后提取图片 URL。Thunderbit 也能借助 AI 自动处理动态内容。

4. 有没有无代码方式来抓取网站图片?
有!Thunderbit 是一款无代码 Chrome 扩展,利用 AI 自动识别并提取任何网站中的图片。只需点选操作,就能导出到 Excel、Google Sheets、Notion 或 Airtable。

5. 可以把 Python 和 Thunderbit 结合起来做图片爬取吗?
完全可以。Thunderbit 负责快速、无代码提取,Python 用于更高级的处理或自动化。先从 Thunderbit 导出数据,再用 Python 脚本继续加工,就能兼顾两者优势。

了解更多

Shuai Guan
Shuai Guan
Thunderbit 首席执行官|AI 数据自动化专家 Shuai Guan 是 Thunderbit 的首席执行官,也是密歇根大学工程学院校友。凭借近十年的科技与 SaaS 架构经验,他专注于将复杂的 AI 模型转化为实用、免代码的数据提取工具。在本博客中,他分享自己经过实战检验、毫无保留的网页爬取与自动化策略,帮助您构建更智能、以数据为驱动的工作流。当他不在优化数据流程时,也会将同样的细致投入到摄影爱好中。
Topics
Python 图片爬虫Python 网页图片抓取Python 批量下载网站图片
目录

只要开口,就能抓取网页

用简单英文说出你的需求。或者更简单,什么都不用说。

试用 Thunderbit 免费
使用 AI 提取数据
轻松将数据传输到 Google Sheets、Airtable 或 Notion
Chrome Store Rating
PRODUCT HUNT#1 Product of the Week