文章目录
前言:为什么要学图片爬虫?
你是不是经常在网上看到好看的图片却一张张手动保存?(手都点酸了吧!) 今天教大家用Python写个「自动存图机器人」,效率直接提升100倍!本教程不需要任何编程基础,只要会复制粘贴代码就能上手~
准备工作(这些坑我先踩过了)
- 安装Python 3.6+(推荐用最新版)
- 按
win+R
输入cmd
打开命令行 - 输入以下命令安装依赖库:
pip install requests beautifulsoup4
(注意!如果报错就换成pip3 install...
)
实战开始!以「壁纸网站」为例
Step1:锁定目标网站
这里我们以「壁纸天堂」网站为例(实际使用时请替换为合规网站)。打开开发者工具(F12),点击Network选项卡,刷新页面就能看到图片的真实地址。
(关键发现:大部分图片藏在标签的src属性里)
Step2:编写爬虫核心代码
import requests
from bs4 import BeautifulSoup
import os
# 创建保存目录(重要!)
save_path = 'downloaded_images'
os.makedirs(save_path, exist_ok=True)
# 伪装浏览器请求头(防封禁必备!)
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36'
}
# 目标页面URL
url = 'https://example-wallpapers.com/page/1'
# 发送请求(超时设置很关键!)
response = requests.get(url, headers=headers, timeout=10)
soup = BeautifulSoup(response.text, 'html.parser')
# 提取所有图片链接
img_tags = soup.find_all('img')
for img in img_tags:
img_url = img.get('src')
# 过滤无效链接
if img_url.startswith('http'):
try:
img_data = requests.get(img_url, timeout=5).content
# 生成唯一文件名
file_name = os.path.join(save_path, img_url.split('/')[-1])
with open(file_name, 'wb') as f:
f.write(img_data)
print(f'已下载:{file_name}')
except Exception as e:
print(f'下载失败:{img_url},错误:{e}')
Step3:运行效果展示
运行后会在当前目录生成downloaded_images
文件夹,所有图片自动保存到这里。我测试时5秒就抓了50张壁纸,比手动快太多了!
常见问题排雷指南(血泪经验)
- 被封IP怎么办?
- 设置随机延迟:在循环里加
time.sleep(random.randint(1,3))
- 使用代理IP池(进阶技巧)
- 图片下载不全?
- 检查网站是否有懒加载,可能需要滚动页面
- 查看是否有动态加载的图片(需要selenium)
- 文件名重复覆盖?
- 改用哈希命名:
hashlib.md5(img_data).hexdigest() + '.jpg'
高阶技巧:自动分类图片
用这个神器库自动识别图片内容:
from PIL import Image
import imagehash
# 计算图片指纹
def get_image_hash(file_path):
with Image.open(file_path) as img:
return imagehash.average_hash(img)
# 创建哈希字典去重
hashes = {}
for file in os.listdir(save_path):
file_path = os.path.join(save_path, file)
current_hash = get_image_hash(file_path)
if current_hash in hashes:
os.remove(file_path)
else:
hashes[current_hash] = file_path
法律红线!这些不能做
- 不要爬取有版权的图片(比如摄影师作品)
- 遵守网站的
robots.txt
规则 - 控制请求频率(别把人家服务器搞挂了)
扩展玩法:还能这样玩?
- 搭建自动换壁纸程序
- 制作专属图库搜索引擎
- 训练AI绘画模型的数据集
总结
图片爬虫可以说是Python最实用的技能之一!(谁用谁知道)建议大家先用教学网站练手,熟悉了再尝试其他平台。下次可能会教大家用这些图片做「自动美图生成器」,想学的同学可以关注后续更新~
(代码测试环境:Windows 11 + Python 3.10,遇到问题欢迎评论区交流~)