如何用 Python 爬取网站图片:爬图教程

图片爬取是网页爬取中非常常见的需求——无论是收集训练数据、构建图片库还是竞品分析,你都会需要从网站上批量下载图片。本文将教你如何使用 Python 爬取网站上的图片

图片爬取的基本原理

  1. 发送 HTTP 请求获取页面 HTML
  2. 使用解析库提取所有 <img> 标签
  3. 获取每个图片的 src 属性
  4. 下载图片到本地

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 属性中

推荐工具和库

总结

图片爬取在技术层面相对直接,难点在于规模化——需要处理懒加载、反爬机制、CDN 防护和代理管理。建议小批量先用 BeautifulSoup,大批量使用 Scrapy 的图片管道。参考:网页爬虫最佳实践

chcrazy

Share