scrapy ImagesPipeline分类获取图片的小工具

喜欢写文章的都知道,有时候有一些好的配图会使得文章看起来更加的丰富,最近我就在想能不能写一个而工具来获取我想要的图片,分类存储,方便我以后写东西用。下面我就分享下我的成果。

目标源网址:
找了很多网站,但是比较后还是百度图片信息比较全一点。而且图片质量也比较好。
在这里插入图片描述

采用scrapy中的ImagesPipeline来下载图片

class DownImgloadPipeline(ImagesPipeline):
    """docstring for DoubanDownloadPipeline"""

    def get_media_requests(self, item, info):
        default_headers = {
            'accept': 'image/webp,image/apng,image/*,*/*;q=0.8',
            'Host': 'img5.imgtn.bdimg.com',
            'referer': item['refere'],
            'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3359.139 Safari/537.36'
        }
        yield scrapy.Request(item['url'],headers=default_headers,meta={"item":item})


    def file_path(self, request, response=None, info=None):
        print(response)
        item = request.meta["item"]
        # 再从item中取出分类名称,这个name就是我们想自定义图片路径的文件名称,(如果不自定义file_path函数的话,默认会将图片下载到full文件里)
        name = item['path']
        # 再从item中取出img_url,分隔出来图片的名称.图片的网址一般最后一个'/'后都是数字,此处用它作图片的名字
        img_url_name = item['name']+'.jpg'
        return "%s/%s" % (name, img_url_name)
        # print(request)

    def item_completed(self, results, item, info):
        pass

get_media_requests:图片下载请求;file_path:定义存储路径

settings文件配置你想要搜索的关键字
在这里插入图片描述
spider代码如下:

 def start_requests(self):
        name_list = picture_name
        for name in name_list:
            for i in range(2):
                num = 0
                url = 'http://image.baidu.com/search/acjson?tn=resultjson_com&ipn=rj&ct=201326592&is=&fp=result&queryWord={0}&cl=2&lm=-1&ie=utf-8&oe=utf-8&adpicid=&st=&z=&ic=&hd=&latest=&copyright=&word={0}&s=&se=&tab=&width=&height=&face=&istype=&qc=&nc=&fr=&expermode=&force=&pn={1}&rn=30'.format(name,num)
                num = num + 30
                yield scrapy.Request(url,callback=self.parse_item,meta={'path':name})


    def parse_item(self,response):
        path = response.meta['path']
        data = json.loads(response.body_as_unicode())['data']
        for i in data:
            item = DownloadpictureItem()
            name = i['fromPageTitleEnc']
            url = i['thumbURL']
            item['url'] = url
            item['name'] = name
            item['path'] = path
            item['refere'] = response.url
            yield item

效果如下:
在这里插入图片描述
在这里插入图片描述
以关键字为目录,以后写文章直接挑选就ok了!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值