如何用 Python 爬取网站图片:爬图教程
图片爬取是网页爬取中非常常见的需求——无论是收集训练数据、构建图片库还是竞品分析,你都会需要从网站上批量下载图片。本文将教你如何使用 Python 爬取网站上的图片。
图片爬取的基本原理
- 发送 HTTP 请求获取页面 HTML
- 使用解析库提取所有
<img>标签 - 获取每个图片的
src属性 - 下载图片到本地
Python 图片爬取示例代码
import requests
from bs4 import BeautifulSoup
import os
def scrape_images(url, save_dir='images'):
os.makedirs(save_dir, exist_ok=True)
r = requests.get(url, headers={'User-Agent': 'Mozilla/5.0...'})
soup = BeautifulSoup(r.content, 'html.parser')
images = soup.find_all('img')
for i, img in enumerate(images):
src = img.get('src')
if src:
if not src.startswith('http'):
src = url + src
img_data = requests.get(src).content
with open(f'{save_dir}/img_{i}.jpg', 'wb') as f:
f.write(img_data)
print(f'Downloaded {len(images)} images')
图片爬取注意事项
- 处理相对路径:有些图片 src 是相对路径,需要拼接完整 URL
- 使用代理:大规模爬取需要代理来避免被封锁
- 尊重 robots.txt:检查网站是否允许爬取
- 版权问题:注意图片版权,不要用于商业用途未授权使用
- 请求间隔:设置合理延迟,避免压垮目标服务器
- 处理懒加载:现代网站大量使用懒加载,真实 src 可能存储在
data-src属性中
推荐工具和库
- BeautifulSoup:HTML 解析
- Scrapy:完整的爬取框架,内置图片管道
- Selenium:处理 JS 渲染的图片
总结
图片爬取在技术层面相对直接,难点在于规模化——需要处理懒加载、反爬机制、CDN 防护和代理管理。建议小批量先用 BeautifulSoup,大批量使用 Scrapy 的图片管道。参考:网页爬虫最佳实践。