使用Python爬取维基百科演员图片遭403禁止,User Agent合规仍无效
解决维基百科图片爬取403 Forbidden错误
核心问题
你遇到的403错误是因为请求图片资源时未遵循维基媒体的User-Agent规范,且你提供的代码仅处理了维基百科页面请求,未覆盖图片资源的请求逻辑。
修复步骤
- 按要求设置合规的User-Agent:格式必须包含项目名称/版本+联系邮箱或网站,示例:
禁止使用随便复制的通用浏览器UA,这类模糊请求会被维基服务器拦截。headers = { 'User-Agent': 'MyActorImageCrawler/1.0 (your-email@example.com)' } - 确保所有请求(包括图片资源)都携带该headers:错误提示中的请求目标是
upload.wikimedia.org下的图片,因此爬取图片时必须传入合规headers,而非仅在维基百科页面请求时使用。 - 图片请求修正示例:
import requests # 合规UA配置 headers = {'User-Agent': 'MyActorImageCrawler/1.0 (your-email@example.com)'} # 目标图片URL img_url = 'https://upload.wikimedia.org/wikipedia/commons/0/0a/Christian_Bale-7837.jpg' # 携带headers请求图片 response = requests.get(img_url, headers=headers) # 保存图片 if response.status_code == 200: with open('christian_bale.jpg', 'wb') as f: f.write(response.content)
额外注意事项
- 控制请求速率,建议每秒不超过1次,避免触发反爬机制
- 爬取内容需遵守维基百科版权协议,禁止商业滥用
内容的提问来源于stack exchange,提问作者Nico O.
相关产品推荐
相关产品推荐

