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中。

相关推荐
喵手18 小时前
Python爬虫实战:增量爬虫实战 - 利用 HTTP 缓存机制实现“极致减负”(附CSV导出 + SQLite持久化存储)!
爬虫·python·爬虫实战·零基础python爬虫教学·增量爬虫·http缓存机制·极致减负
喵手1 天前
Python爬虫实战:舆情语料项目 - 从新闻抓取到文本挖掘的完整实战(附CSV导出 + SQLite持久化存储)!
爬虫·python·爬虫实战·零基础python爬虫教学·舆论语料项目·新闻抓取到文本挖掘·爬虫实战采集舆论语料
喵手1 天前
Python爬虫实战:数据质量检测与治理 - 构建健壮的爬虫数据管道(附CSV导出 + SQLite持久化存储)!
爬虫·python·sqlite·爬虫实战·零基础python爬虫教学·数据质量检测与治理·爬虫数据管道
喵手2 天前
Python爬虫实战:电商问答语料构建完整实战 - 从爬取到检索语料的工程化实现(附CSV导出 + SQLite持久化存储)!
爬虫·python·sqlite·爬虫实战·零基础python爬虫教学·电商问答语料构建·爬取到检索语料
yq1982043011562 天前
基于Python爬虫原理的Pinterest视频资源获取技术解析与工具实践
爬虫·python·django·音视频
喵手2 天前
Python爬虫实战:自动化质量护航 - 构建爬虫数据的“熔断与巡检”规则引擎实战!
爬虫·python·自动化·爬虫实战·零基础python爬虫教学·自动化质量护航·数据熔断
嚯嚯歪3 天前
攻克腾讯 TCaptcha 滑块验证码:纯 HTTP 协议逆向实战
爬虫·python·逆向·验证码识别
喵手3 天前
Python爬虫实战:构建一个高健壮性的图书数据采集器!
爬虫·python·爬虫实战·零基础python爬虫教学·构建图书数据·采集图书数据·图书数据采集
喵手3 天前
Python爬虫实战:监控型爬虫实战 - 从结构检测到智能告警的完整方案(附CSV导出 + SQLite持久化存储)!
爬虫·python·爬虫实战·零基础python爬虫教学·csv导出·监控型爬虫实战·从结构哦检测到智能告警
深蓝电商API3 天前
爬虫中 Cookie 池维护与自动刷新
爬虫·python