使用scrapy.pipelines.images中ImagesPipeline爬取图片

本文介绍了如何利用Scrapy的ImagesPipeline组件来爬取和存储网页中的图片。首先,在items.py中设置image_urls和image字段,分别保存图片链接和下载信息。接着,定义Spider并导入自定义item,通过继承ImagePipeline并重写get_media_requests()和item_completed()方法来处理图片下载。最后,在settings.py中配置IMAGES_STORE为图片存储路径,并在ITEM_PIPELINE中启用自定义pipeline,运行爬虫即可完成图片抓取。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

有句话说的好呀,不喜欢漂亮妹子的程序员不是什么好的野生程序员。咱们怎么也该是中等意思的程序员吧,哈哈。好吧,不管他们了,干活啦。

首先在items.py中设置image_urls字段和image字段。第一个字段存储提取的的图片的链接,第二个字段是下载图片后保留的图片信息,分别是校验码,路径,以及图片URL具体如下:

{
  
  'checksum': '634576d5da10742deb080459dd318af9',
             'path': 'full/16eeed9efb3be210efd8c976abf9ab3d04fe3806.jpg',
             'url': 'http://mm.chinasareview.com/wp-content/uploads/2017a/06/14/limg.jpg'},

然后定义spider,首先要导入刚才定义好的item,代码如下:

import scrapy
from ..items import MeizhituItem
from urllib.parse import ur
2025-06-23 21:55:54 [scrapy.utils.log] INFO: Scrapy 2.13.2 started (bot: xinwenScrapy) 2025-06-23 21:55:54 [scrapy.utils.log] INFO: Versions: {'lxml': '5.4.0', 'libxml2': '2.11.9', 'cssselect': '1.3.0', 'parsel': '1.10.0', 'w3lib': '2.3.1', 'Twisted': '25.5.0', 'Python': '3.13.1 (tags/v3.13.1:0671451, Dec 3 2024, 19:06:28) [MSC v.1942 ' '64 bit (AMD64)]', 'pyOpenSSL': '25.1.0 (OpenSSL 3.5.0 8 Apr 2025)', 'cryptography': '45.0.4', 'Platform': 'Windows-11-10.0.26100-SP0'} 2025-06-23 21:55:54 [scrapy.addons] INFO: Enabled addons: [] 2025-06-23 21:55:54 [asyncio] DEBUG: Using selector: SelectSelector 2025-06-23 21:55:54 [scrapy.utils.log] DEBUG: Using reactor: twisted.internet.asyncioreactor.AsyncioSelectorReactor 2025-06-23 21:55:54 [scrapy.utils.log] DEBUG: Using asyncio event loop: asyncio.windows_events._WindowsSelectorEventLoop 2025-06-23 21:55:54 [scrapy.extensions.telnet] INFO: Telnet Password: 5f5549b54b8290ea 2025-06-23 21:55:55 [scrapy.middleware] INFO: Enabled extensions: ['scrapy.extensions.corestats.CoreStats', 'scrapy.extensions.telnet.TelnetConsole', 'scrapy.extensions.logstats.LogStats', 'scrapy.extensions.throttle.AutoThrottle'] 2025-06-23 21:55:55 [scrapy.crawler] INFO: Overridden settings: {'AUTOTHROTTLE_ENABLED': True, 'BOT_NAME': 'xinwenScrapy', 'DOWNLOAD_DELAY': 2, 'NEWSPIDER_MODULE': 'xinwenScrapy.spiders', 'SPIDER_MODULES': ['xinwenScrapy.spiders'], 'USER_AGENT': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 ' '(KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36'} 2025-06-23 21:55:55 [py.warnings] WARNING: C:\Users\Lenovo\PycharmProjects\PythonProject10\.venv\Lib\site-packages\scrapy\utils\url.py:26: ScrapyDeprecationWarning: The scrapy.utils.url.canonicalize_url function is deprecated, use w3lib.url.canonicalize_url instead. warnings.warn( 2025-06-23 21:55:55 [scrapy.middleware] INFO: Enabled downloader middlewares: ['scrapy.downloadermiddlewares.offsite.OffsiteMiddleware', 'scrapy.downloadermiddlewares.httpauth.HttpAuthMiddleware', 'scrapy.downloadermiddlewares.downloadtimeout.DownloadTimeoutMiddleware', 'scrapy.downloadermiddlewares.defaultheaders.DefaultHeadersMiddleware', 'scrapy.downloadermiddlewares.useragent.UserAgentMiddleware', 'scrapy.downloadermiddlewares.retry.RetryMiddleware', 'scrapy.downloadermiddlewares.redirect.MetaRefreshMiddleware', 'scrapy.downloadermiddlewares.redirect.RedirectMiddleware', 'scrapy.downloadermiddlewares.cookies.CookiesMiddleware', 'scrapy_splash.SplashCookiesMiddleware', 'scrapy_splash.SplashMiddleware', 'scrapy.downloadermiddlewares.httpproxy.HttpProxyMiddleware', 'scrapy.downloadermiddlewares.httpcompression.HttpCompressionMiddleware', 'scrapy.downloadermiddlewares.stats.DownloaderStats'] 2025-06-23 21:55:55 [scrapy.middleware] INFO: Enabled spider middlewares: ['scrapy.spidermiddlewares.start.StartSpiderMiddleware', 'scrapy.spidermiddlewares.httperror.HttpErrorMiddleware', 'scrapy.spidermiddlewares.referer.RefererMiddleware', 'scrapy.spidermiddlewares.urllength.UrlLengthMiddleware', 'scrapy.spidermiddlewares.depth.DepthMiddleware'] 2025-06-23 21:55:55 [scrapy.middleware] WARNING: Disabled scrapy.pipelines.images.ImagesPipeline: ImagesPipeline requires installing Pillow 8.0.0 or later 2025-06-23 21:55:55 [scrapy.middleware] INFO: Enabled item pipelines: ['xinwenScrapy.pipelines.XinwenscrapyPipeline'] 2025-06-23 21:55:55 [scrapy.core.engine] INFO: Spider opened 2025-06-23 21:55:55 [scrapy.extensions.logstats] INFO: Crawled 0 pages (at 0 pages/min), scraped 0 items (at 0 items/min) 2025-06-23 21:55:55 [scrapy.extensions.telnet] INFO: Telnet console listening on 127.0.0.1:6023 2025-06-23 21:55:56 [scrapy.core.engine] DEBUG: Crawled (200) <GET https://cloud.inspur.com/about-inspurcloud/about-us/news/index.html> (referer: None) 2025-06-23 21:55:56 [scrapy.core.engine] INFO: Closing spider (finished) 2025-06-23 21:55:56 [scrapy.statscollectors] INFO: Dumping Scrapy stats: {'downloader/request_bytes': 339, 'downloader/request_count': 1, 'downloader/request_method_count/GET': 1, 'downloader/response_bytes': 39970, 'downloader/response_count': 1, 'downloader/response_status_count/200': 1, 'elapsed_time_seconds': 0.933681, 'finish_reason': 'finished', 'finish_time': datetime.datetime(2025, 6, 23, 13, 55, 56, 384625, tzinfo=datetime.timezone.utc), 'httpcompression/response_bytes': 554702, 'httpcompression/response_count': 1, 'items_per_minute': None, 'log_count/DEBUG': 4, 'log_count/INFO': 10, 'log_count/WARNING': 2, 'response_received_count': 1, 'responses_per_minute': None, 'scheduler/dequeued': 1, 'scheduler/dequeued/memory': 1, 'scheduler/enqueued': 1, 'scheduler/enqueued/memory': 1, 'start_time': datetime.datetime(2025, 6, 23, 13, 55, 55, 450944, tzinfo=datetime.timezone.utc)} 2025-06-23 21:55:56 [scrapy.core.engine] INFO: Spider closed (finished) 分析以上日志中报错的内容并修改优化
最新发布
06-24
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值