需求分析
需求:爬取斗鱼主播图片,并下载到本地

思路:

使用Fiddler抓包工具,抓取斗鱼手机APP中的接口
使用Scrapy框架的ImagesPipeline实现图片下载
ImagesPipeline实现图片下载的使用方法:

在items中的XxxItem中定义 image_urls 和 images字段
在spider中将提取出来的图片链接保存到Item的 image_urls 字段中(注意:该字段接收一个可迭代对象,否则报错)
在settings文件中进行配置,具体配置见 settings.py 文件

items.py

class DouyuMeiziItem(scrapy.Item):
"""斗鱼妹子爬虫Item""" image_urls=scrapy.Field()
images=scrapy.Field()

  

spider.py

# !/usr/bin/env python
# -*- coding:utf-8 -*- import json
import scrapy
from myscrapy.items import DouyuMeiziItem class DouyuMeiziSpider(scrapy.Spider):
"""
爬取斗鱼直播平台中的主播信息
练习:
1. 手机APP抓包(获取json数据API接口)
2. 用Scrapy进行图片下载的方法
""" name = 'douyuzhubo'
allowed_domains=['douyucdn.cn',] offset=0
base_url='http://capi.douyucdn.cn/api/v1/getVerticalRoom?limit=20&offset='
start_urls=[base_url+str(offset),] def parse(self, response):
# 获取响应内容,字符串
content=response.text
data=json.loads(content)['data'] for i in data:
# 图片链接
image_url=i['vertical_src'] item=DouyuMeiziItem()
# 该字段必须是图片链接的可迭代对象,否则报错
item['image_urls']=[image_url]
yield item if self.offset<230:
self.offset+=20
yield scrapy.Request(url=self.base_url+str(self.offset),callback=self.parse)

  

settings.py

ITEM_PIPELINES = {
# 引入Scrapy提供的ImagesPipeline组件
'scrapy.pipelines.images.ImagesPipeline': 300,
}
# ImagesPipeline辅助配置项
# 图片存储路径(绝对路径 or 相对路径)
IMAGES_STORE = 'data/斗鱼主播图片/'
# 该字段的值为XxxItem中定义的存储图片链接的image_urls字段
IMAGES_URLS_FIELD='image_urls'
# 该字段的值为XxxItem中定义的存储图片信息的images字段
IMAGES_RESULT_FIELD='images'
# 生成缩略图(可选)
IMAGES_THUMBS = {
'small': (50, 50),
'big': (270, 270),
}
# 过期时间,单位:天(可选)
IMAGES_EXPIRES = 120
# 过滤小图片(可选)
# IMAGES_MIN_HEIGHT = 110
# IMAGES_MIN_WIDTH = 110
# 是否允许重定向(可选)
# MEDIA_ALLOW_REDIRECTS = True

  

Scrapy框架学习 - 使用内置的ImagesPipeline下载图片的更多相关文章

  1. 通过scrapy内置的ImagePipeline下载图片到本地、并提取本地保存地址

    1.通过scrapy内置的ImagePipeline下载图片到本地 2.获取图片保存本地的地址 1.通过scrapy内置的ImagePipeline下载图片到本地 1)在settings.py中打开  ...

  2. shiro框架学习-3- Shiro内置realm

    1. shiro默认自带的realm和常见使用方法 realm作用:Shiro 从 Realm 获取安全数据 默认自带的realm:idae查看realm继承关系,有默认实现和自定义继承的realm ...

  3. shiro框架学习-6-Shiro内置的Filter过滤器及数据加解密

    1.  shiro的核心过滤器定义在枚举类DefaultFilter 中,一共有11个 ,配置哪个路径对应哪个拦截器进行处理 // // Source code recreated from a .c ...

  4. shiro框架学习-4- Shiro内置JdbcRealm

    1.  JdbcRealm 数据库准备 JdbcRealm就是用户的角色,权限都从数据库中读取,也就是用来进行用户认证授权的安全数据源更换为从数据库中读取,其他没有差别,首先在数据库创建三张表: CR ...

  5. 自己的Scrapy框架学习之路

    开始自己的Scrapy 框架学习之路. 一.Scrapy安装介绍 参考网上资料,先进行安装 使用pip来安装Scrapy 在开始菜单打开cmd命令行窗口执行如下命令即可 pip install Scr ...

  6. Scrapy框架学习(三)Spider、Downloader Middleware、Spider Middleware、Item Pipeline的用法

    Spider有以下属性: Spider属性 name 爬虫名称,定义Spider名字的字符串,必须是唯一的.常见的命名方法是以爬取网站的域名来命名,比如爬取baidu.com,那就将Spider的名字 ...

  7. JavaScript学习07 内置对象

    JavaScript内置对象 图像对象 导航对象 窗口对象 屏幕对象 事件对象 历史对象 文件对象(重要) 锚点对象 链接对象 框架对象 表单对象(重要) 位置对象 JS Window 窗口对象:ht ...

  8. JavaWeb学习----JSP内置对象详解

    [声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/4 ...

  9. 如何在Crystal框架项目中内置启动MetaQ服务?

    当Crystal框架项目中需要使用消息机制,而项目规模不大.性能要求不高时,可内置启动MetaQ服务器. 分步指南 项目引入crystal-extend-metaq模块,如下: <depende ...

随机推荐

  1. Spring boot 整合hive-jdbc导致无法启动的问题

    使用Spring boot整合Hive,在启动Spring boot项目时,报出异常: 经过排查,是maven的包冲突引起的,具体做法,排除:jetty-all.hive-shims依赖包.对应的po ...

  2. [django]drf知识点梳理-分页

    msyql分页 limit offset https://www.cnblogs.com/iiiiiher/articles/8846194.html django自己实现分页 https://www ...

  3. elasticsearch 处理index 一直INITIALIZING状态

    elasticsearch一个节点异常重启后有一个index恢复的过程中状态一直INITIALIZING 处理方法 PUT index_name/_settings { "index&quo ...

  4. 【LeetCode每天一题】Group Anagrams(变位词组)

    Given an array of strings, group anagrams together. Example: Input: ["eat", "tea" ...

  5. Oracle相关安装经验总结

    1. 安装的是oracle 12c client for windows,从同事处拿到的,说是64位的,不过我没有找到包含有64这样的文件名或者里面内容有64位的.从同事处拿到的plsqldev110 ...

  6. IDEA2017及DataGrip2017注册码

    访问http://idea.lanyus.com/,网页中有相关说明,最简单的方式是将“0.0.0.0 account.jetbrains.com”添加到hosts文件中,然后点击页面底部的“获得注册 ...

  7. jQuery-切换2

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  8. gedit emacs

    emacs常用操作: 1)C-g:退出当前命令 2)C-x C-f:搜索文件打开 3)C-s:向前搜索 C-r:向后搜索 4)C-x 2:水平分割窗口 C-x 3:竖直分割窗口 5)C-x o:切换窗 ...

  9. 水题 K

    输入4行全部由大写字母组成的文本,输出一个垂直直方图,给出每个字符出现的次数.注意:只用输出字符的出现次数,不用输出空白字符,数字或者标点符号的输出次数. Input输入包括4行由大写字母组成的文本, ...

  10. css 渐变动画

    就是这样 这是一段可选文字 -------------------------------------- 代码如下 CSS代码: @media all and (-webkit-min-device- ...