scrapy 鲜花数据爬虫之【上】图片下载

news/2024/10/21 17:17:13/

本项目仅供学习之用

1 爬虫开发

利用scrapy工程编写爬取鲜花数据的爬虫,本次的目标是先下载相关的图片,要下载图片首先要获取到的就是图片的链接,爬虫的编写如下:

class FlowerSpider(scrapy.Spider):name = 'flower'allowed_domains = ['huafensi.com']start_urls = [f"http://www.huafensi.com/huahui/page_{i}.html" for i in range(1, 63)]def parse(self, response):flower_items = response.css('div.part-cont3 dl')for flower in flower_items:title = flower.css('dt a::attr(title)').get()img_src = flower.css('dt a img::attr(src)').get()img_src = response.urljoin(img_src)detail_url = flower.css('dt a::attr(href)').get()detail_url = response.urljoin(detail_url)# 创建 FlowerItem 实例item = FlowerItem()item['title'] = titleitem['image_urls'] = [img_src]item['detail_url'] = detail_urlreturn item

item部分之需要把上面用到的3个变量定义一下就行了,然后重点是管道部分,需要开发一个专门下载图片的管道

class CustomImagesPipeline(ImagesPipeline):def get_media_requests(self, item, info):for image_url in item['image_urls']:yield Request(image_url)def file_path(self, request, response=None, info=None, *, item=None):# 使用 item['title'] 生成文件名title = item['title'].replace(' ', '_').replace('/', '_')  # 替换空格和斜杠为下划线,避免路径问题filename = f'{title}.jpg'  # 假设所有图片格式为 jpgreturn filenamedef item_completed(self, results, item, info):image_paths = [x['path'] for ok, x in results if ok]if not image_paths:raise DropItem("Item contains no images")item['images'] = image_pathsreturn item

这样图片会自动下载到img文件夹里去了,记得在settings.py里激活一下这个自定义的管道。

2 爬虫运行截图

在这里插入图片描述

3 爬取图片结果

总共爬取 1465 张图片,爬取结果如下
在这里插入图片描述
在这里插入图片描述

4 后续

下一篇来说如何爬取花卉的信息存入excel中。


http://www.ppmy.cn/news/1540847.html

相关文章

【AI学习】Anthropic公司CEO Dario Amodei最近发表的文章《Machines of Loving Grace:AI如何让世界变得更好》

Anthropic公司CEO Dario Amodei最近发表的文章。通过翻译工具,大概看了看,未来非常美好! 只是生物学和身体健康 、神经科学和心理健康这两部分的前景,就非常让人兴奋! Machines of Loving Grace How AI Could Transf…

Lua条件语句

软考鸭微信小程序 过软考,来软考鸭! 提供软考免费软考讲解视频、题库、软考试题、软考模考、软考查分、软考咨询等服务 在Lua编程语言中,条件语句是控制程序执行流程的关键工具。它们允许开发者根据特定条件的真假来执行不同的代码块,从而实现复杂的逻辑…

【Golang】Gin框架:Go语言中的轻量级Web框架

✨✨ 欢迎大家来到景天科技苑✨✨ 🎈🎈 养成好习惯,先赞后看哦~🎈🎈 🏆 作者简介:景天科技苑 🏆《头衔》:大厂架构师,华为云开发者社区专家博主,…

Centos安装Nginx 非Docker

客户的机器属于 Centos7 系列,由于其较为陈旧,2024开始众多镜像和软件源都已失效。此篇文章将详细记录在 Centos7 操作系统上从零开始安装 Nginx 的整个流程。 本文Nginx是安装在/usr/local/nginx下 详细步骤如下: 准备Nginx安装包&#x…

Java之异常体系

异常体系分类: Error 错误Exception 异常错误和异常的继承关系: 所有错误的父类为 Error 类所有异常的父类为 Exception 类Error 和 Exception 的父类为 ThrowableThrowable:代表可抛出错误类型: 编译错误:由编译器找到…

安装配置sqoop(超详细)

前言 sqoop就是sql-to-hadoop,说通俗点,我们用到最多的就是mysql与hive之间的数据传递,而hive是依靠hadoop运行的,所以要再mysql和hive之间互相传递数据,就必须要安装sqoop 一、准备 我们要准备sqoop的安装包&#…

springboot+uinapp基于Android的固定资产借用管理平台

文章目录 前言项目介绍技术介绍功能介绍核心代码数据库参考 系统效果图论文效果图 前言 文章底部名片,获取项目的完整演示视频,免费解答技术疑问 项目介绍 固定资产借用管理平台设计的目的是为用户提供使用申请、故障报修、设备归还、意见反馈等管理方…

大数据-174 Elasticsearch Query DSL - 全文检索 full-text query 匹配、短语、多字段 详细操作

点一下关注吧!!!非常感谢!!持续更新!!! 目前已经更新到了: Hadoop(已更完)HDFS(已更完)MapReduce(已更完&am…