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

本项目仅供学习之用

1 爬虫开发

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

python 复制代码
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'] = title
            item['image_urls'] = [img_src]
            item['detail_url'] = detail_url

            return item

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

python 复制代码
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'  # 假设所有图片格式为 jpg
        return filename

    def 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_paths
        return item

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

2 爬虫运行截图

3 爬取图片结果

总共爬取 1465 张图片,爬取结果如下

4 后续

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

相关推荐
源码之家6 小时前
计算机毕业设计:基于Python的美食推荐分析系统 Django框架 爬虫 协同过滤推荐算法 可视化 推荐系统 数据分析 大数据(建议收藏)✅
爬虫·python·机器学习·django·flask·课程设计·美食
源码之家13 小时前
计算机毕业设计:基于Python与协同过滤的美食推荐系统 Django框架 可视化 协同过滤推荐算法 菜谱 食品 机器学习(建议收藏)✅
爬虫·python·机器学习·django·毕业设计·课程设计·美食
bryant_meng13 小时前
【Spider】Finding API Keys
爬虫·图库
进击的雷神14 小时前
攻克HTML属性数据埋点与分页偏移陷阱:基于data-id属性提取的精准爬虫设计
前端·爬虫·html·spiderflow
进击的雷神15 小时前
攻克POST动态加载与字段缺失容错:基于偏移量计算的双路条件分支爬虫设计
爬虫·spiderflow
源码之家15 小时前
计算机毕业设计:基于Python的美食菜谱数据分析可视化系统 Django框架 爬虫 机器学习 数据分析 可视化 食物 食品 菜谱(建议收藏)✅
爬虫·python·数据分析·django·flask·课程设计·美食
喵手1 天前
Python爬虫实战:手把手教你Python 自动化构建志愿服务岗位结构化数据库!
爬虫·python·自动化·数据采集·爬虫实战·零基础python爬虫教学·志愿服务岗位结构数据库打造
小邓睡不饱耶2 天前
Python多线程爬虫实战:爬取论坛帖子及评论
开发语言·爬虫·python
喵手2 天前
Python爬虫实战:手把手教你如何采集开源字体仓库目录页(Google Fonts / 其他公开字体目录)!
爬虫·python·自动化·数据采集·爬虫实战·零基础python爬虫教学·开源字体仓库目录页采集
axinawang2 天前
正则表达式
爬虫·python