srcary下载图片,封面及详细页图片分开下载,如何使用默认下载组件

来源:4-16 scrapy配置图片下载

慕瓜6579165

2020-09-12

老师,还有个小问题,如下
scrapy爬取网站的时候,网站一般会有封面图片跟详细内容图片,如何能分2个字段入库,并下载,我按我们教程来,有一个折中办法就是将获取的字段都放在一个字段中,如下面这样写:

    images = response.meta.get("image","")
    pics = response.xpath("//div[@class='swiper-wrapper']//img/@src").extract()
    pics.append(images)
    item_loader.add_value("pics", pics) # 获取图集

问题来了,这样写不够简洁也不方便后期维护,这个第一,第二是pipelines.py中配置下面这样才能获取修改后的路径,看着都觉得蛋疼(因为入库要分开2个字段,方便直接发布)

    class ArticleImagePipeline(ImagesPipeline):
    def item_completed(self, results, item, info):
        if "image" in item: # 查看item是否有图片字段
            for ok, value in results: # 遍历图片字段
                image_file_path = value["path"] # 将遍历的字段赋值
            item["image"] = image_file_path # 将图片路径保存在item字典中

        if "pics" in item: # 查看item是否有图片字段
            pics_list = []
            for ok, value in results: # 遍历图片字段
                pics_file_path = value["path"] # 将遍历的字段赋值
                if pics_file_path == item["image"]:
                    pass
                else:
                    pics_list.append(pics_file_path)
            item["pics"] = ",".join(pics_list) # 将图片路径保存在item字典中
        
        return item

有什么好的办法解决,折腾了几天了,没想到更好的代码分离方法

写回答

3回答

bobby

2020-09-17

//img.mukewang.com/szimg/5f62d44b0989101c07850183.jpg ,这个代码在//img.mukewang.com/szimg/5f62d48a0956eff210410325.jpg这个文件中,你顺着上面的process_item中的源码找到关键源码就知道scrapy是如何处理图片的了,然后自己改一下就行了

0
2
bobby
回复
慕瓜6579165
好的,加油
2020-11-05
共2条回复

酷丫

2020-09-16

如果只是两个字段图片下载,可以同时使用FilesPipeline和ImagesPipeline来同时下载图片。 我的需求是三个字段图片,列表图,缩略图,文章图。就只能按你这种全部塞一个字段里,然后判断。希望bobble老师能出一个视频同时爬三个图片字段的。

0
1
bobby
这个问题, 之前有个同学的提问里我详细回复过,主要是给他指明了这个地方的源码应该看哪里, 你只要知道这个图片下载的函数执行过程就知道如何修改了。
2020-09-17
共1条回复

bobby

2020-09-13

  1. 分析源码即可知道

    ImagesPipeline这个类的源码中有两个方法可以改

    //img.mukewang.com/szimg/5f5df84109bd8cb608960214.jpg

    这里你得知道item_completed的调用时机,你可以继续往上找ImagesPipeline的继承类,一直往上找你在第二层会找到MediaPipeline你会发现这也是一个pipeline会有一个process_item方法,源码如下:

    //img.mukewang.com/szimg/5f5df8c109d4543f09200200.jpg

    这几处源码你看懂了就知道图片现在是如何完成的了,你就可以重点看看你自己如何覆盖哪几个方法为你服务了

0
3
酷丫
回复
bobby
希望bobble老师能出一个视频同时爬三个图片字段的。网上实在搜不到了。
2020-09-16
共3条回复

Scrapy打造搜索引擎 畅销4年的Python分布式爬虫课

带你彻底掌握Scrapy,用Django+Elasticsearch搭建搜索引擎

5795 学习 · 6290 问题

查看课程