You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Scrapy无法下载图片问题求助(附开发环境与代码)

问题解决:Scrapy图片管道未下载图片

核心错误修正

你的spider.py里存在变量名拼写错误,这是图片无法下载的直接原因:

# 错误写法
yield {
    'image_urls':clean_url
}

# 正确写法(使用定义好的列表变量clean_urls)
yield {
    'image_urls':clean_urls
}

你定义了存储图片URL的列表clean_urls,但yield时误用了未定义的clean_url,Scrapy的图片管道无法识别无效字段,因此不会触发下载逻辑。

其他必要检查与配置

  1. 安装依赖库
    Scrapy的ImagesPipeline依赖Pillow库,执行命令安装:
pip install pillow
  1. 请求头与Robots规则适配
    维基百科的robots.txt可能限制爬虫行为,可在settings.py添加模拟浏览器的请求头,同时确认ROBOTSTXT_OBEY配置:
ROBOTSTXT_OBEY = False
DEFAULT_REQUEST_HEADERS = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36'
}
  1. 确保存储路径可写
    验证IMAGES_STORE的路径权限,可使用绝对路径避免相对路径的不确定性:
import os
IMAGES_STORE = os.path.join(os.getcwd(), 'images_folder')

修正后的完整spider.py

import scrapy


class WikiSpider(scrapy.Spider):
    name = 'wiki'
    start_urls = ['https://en.wikipedia.org/wiki/Real_Madrid_CF']

    def parse(self, response):   
        urls = response.css('.image img ::attr(src)').getall()
        clean_urls = []

        for url in urls:
            clean_urls.append(response.urljoin(url))
        yield {
            'image_urls': clean_urls
        }

完成以上修改后重新运行爬虫,图片会正常下载到指定的images_folder目录中。

内容的提问来源于stack exchange,提问作者William Lulz

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.14 22:30:33