学习时间:9:00——12:00      15:00——16:30

图片数据爬取之ImagesPipeline
—基于scrapy爬取字符串类型的数据和爬取图片类型的数据区别?
     —字符串:只需要基于xpath进行解析且提交管道进行持久化存储
     —图片:xpath解析出图片src的属性值。单独的对图片地址发起请求获取图片二进制类型的数据

—ImagesPipeline:
     —只需要将img的src的属性值进行解析,提交到管道,管道就会对图片的src进行请求发送获取图片的二进制数据,还会进行持久化存储

需求:爬职站长素材中的高清图片
一使用流程:
一数据解析(图片的地址)
一将存储图片地址的item提交到制定的管道类
—在管道文件中自定制一个基于ImagesPipeLine的一个管道类  
    —get_media_request
    — file_path
    — item completed—

—在配置文件中:
一指定图片存储的目录:IMAGES_STORE = './imgs'
—指定开启的管道:自定制的管道类
代码如下:

img.py

import scrapy
from imgsPro.items import ImgsproItemclass ImgSpider(scrapy.Spider):name = 'img'# allowed_domains = ['www.xxx.com']start_urls = ['https://sc.chinaz.com/tupian/']def parse(self, response):div_list = response.xpath('//div[@id="container"]/div')for div in div_list:src = div.xpath('./div/a/img/@src').extract_first()img_src = src.replace('_s.jpg','.jpg')img_src = 'https:' + img_src# print(img_src)item = ImgsproItem()item['img_src'] = img_srcyield item

items.py

import scrapyclass ImgsproItem(scrapy.Item):# define the fields for your item here like:img_src = scrapy.Field()

pipelines.py

import scrapy
from itemadapter import ItemAdapter
from scrapy.pipelines.images import ImagesPipeline# class ImgsproPipeline:
#     def process_item(self, item, spider):
#         return itemclass imgsPileLine(ImagesPipeline):#根据图片地址进行图片数据的请求def get_media_requests(self, item, info):yield scrapy.Request(item['img_src'])#指定图片存储的路径def file_path(self, request, response=None, info=None, *, item=None):imgName = request.url.split('/')[-1]return imgNamedef item_completed(self, results, item, info):return item #返回给下一个即将执行的管道类

settings.py

USER_AGENT = 'xxx'LOG_LEVEL = 'ERROR'ROBOTSTXT_OBEY = FalseITEM_PIPELINES = {'imgsPro.pipelines.imgsPileLine': 300,
}#指定图片存储的目录
IMAGES_STORE = './imgs'
MEDIA_ALLOW_REDIRECTS =True

注意:

item['src']会报错,不能用src

图片一开始的src仅为缩略图src,并不是高清的src,对比可知,高清图片的src仅是在缩略图src后加上_s即可,并且src不完整,要在前面拼接上 https:

如果既没有报错也没有反应,那么要安装pillow

类名要注意统一,注意拼写错误

中间件

—下载中间件

—位置:引擎和下载器之间

—作用:批量拦截到整个工程所有的请求和响应

—拦截请求:UA伪装:process_request

代理ip:process_exception:return request

—拦截响应:篡改响应数据、响应对象

第六周——爬虫入门 Day4 8.4相关推荐

  1. 又整理了一周爬虫的学习资料,内含入门、实战、视频,请收藏

    说在前面:后台回复「爬虫书籍」,获取「图解http」.「精通正则表达式 」电子书- 基于上次的「整理了一周的Python资料,包含各阶段所需网站.项目,收藏了慢慢来」反响还不错,而且我也说过,这篇文章 ...

  2. python爬虫入门实战---------一周天气预报爬取_Python爬虫入门实战--------一周天气预报爬取【转载】【没有分析...

    Python爬虫入门实战--------一周天气预报爬取[转载][没有分析 Python爬虫入门实战--------一周天气预报爬取[转载][没有分析] 来源:https://blog.csdn.ne ...

  3. Python爬虫入门六之Cookie的使用

    大家好哈,上一节我们研究了一下爬虫的异常处理问题,那么接下来我们一起来看一下Cookie的使用. 为什么要使用Cookie呢? Cookie,指某些网站为了辨别用户身份.进行session跟踪而储存在 ...

  4. python六小时网络爬虫入门_一小时入门 Python 3 网络爬虫

    原标题:一小时入门 Python 3 网络爬虫 作者:Jack-Cui,热爱技术分享,活跃于 CSDN 和知乎,开设的<Python3网络爬虫入门>.<Python3机器学习> ...

  5. 网络攻防-20169213-刘晶-第六周作业

    教材学习内容 网络安全CIA属性:机密性(Confidentiality).完整性(Integ rity).可用性(Availability).其他两个补充属性:真实性(Authentication) ...

  6. python爬虫入门代码-Python爬虫入门

    原标题:python爬虫入门 基础知识 HTTP协议 我们浏览网页的浏览器和手机应用客户端与服务器通信几乎都是基于HTTP协议,而爬虫可以看作是一个另类的客户端,它把自己伪装成浏览器或者手机应用客户端 ...

  7. python爬虫程序实例-10个python爬虫入门实例

    作者:h3zh1 来源:cnblogs.com/h3zh1/p/12548946.html 今天为大家准备了几个简单的python爬虫入门实例,分享给大家. 涉及主要知识点:web是如何交互的 req ...

  8. 20155303 2016-2017-2 《Java程序设计》第六周学习总结

    20155303 2016-2017-2 <Java程序设计>第六周学习总结 课堂笔记 高效学习法推荐 看视频学习(2h)→ 以代码为中心看课本,思考运行结果并验证(3h)→ 课后作业验证 ...

  9. 一看就明白的爬虫入门讲解:基础理论篇

    一看就明白的爬虫入门讲解:基础理论篇 发表于2015-11-13 18:50| 5909次阅读| 来源CSDN| 37 条评论| 作者孔淼 爬虫经验分享HTMLCSSAjaxApp网络 width=& ...

最新文章

  1. soap php 分开类,将请求处理到同一PHP SOAP服务器中的多个类
  2. 英佩臻游联手发力《全球使命VR》突显未来野心
  3. 分布式Tensorflow入门Demo
  4. python与数值计算环境安装
  5. 信息系统项目管理06——项目进度管理
  6. java 整型list_Java:集合,对列表(List)中的数据(整型、字符串、日期等)进行排序(正序、倒序)的方法;字符串按照整型排序的方法...
  7. Jsoup爬虫的基本使用
  8. xp关机时询问对计算机做什么,XP关机的六个方法
  9. 弹丸论破2 中文攻略
  10. 阿里国际站P4P直通车玩法
  11. ROS中Remap标签详解,举例说明其两种用法
  12. NestJs 学习(一) 基础知识
  13. c语言用二维数组查找负数,[抄道题] 在二维数组中找某数
  14. 使用EndNote导出GB/T 7714—2015格式的参考文献
  15. Linux查看内存型号,插槽使用情况,内存频率,内存制造商等信息
  16. 两分钟彻底让你明白Android Activity生命周期
  17. JavaScript中常见键盘事件以及BOM中window常用对象
  18. CAD制图教程:多跑楼梯对话框控件说明及工程实例
  19. 什么是人工智能?——TensorFlow笔记一
  20. JavaScript开发者应懂的33个概念

热门文章

  1. ipad分屏_Ipad使用技巧大总结。
  2. 测试员就是“背锅侠”?学会这些,扔掉测试人常背的3口“锅”
  3. 计算机重命名后sql实例名称修改_离水的鱼_新浪博客
  4. 庄懂老师TA学习笔记 - 半兰伯特光照模型
  5. 苹果发布新款iPad Pro!就换了个「芯」,转换器骚操作笑翻网友
  6. BFS算法之地铁路线问题
  7. 高分子物理名词解释归纳
  8. E4A - 蓝牙串口连接失败的问题
  9. kotlin协程简单封装,助你一臂之力
  10. 牛客国庆集训派对Day1 C-Utawarerumono(扩展欧几里得)