学习时间: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. Microbiome:人类肠道和病原菌的可移动抗性组驱动环境中抗生素抗性增长
  2. python虚拟cpu性能_如何使用python找出CPU数量
  3. Oracle SQL Developer - 智能提示
  4. 文件上传 upload-labs 1~20做题记录
  5. maven 连接sqlserver
  6. QT控件出现乱码问题
  7. 基于单片机的无线鼠标设计
  8. c语言获取pmbus之pec值
  9. 【 CSDN 】 如何修改CSDM 自定义摘要功能
  10. 小额批量支付系统可以完成跨行资金清算吗_今天,你转账了吗?带你看懂央行小额批量支付系统...
  11. Excel隔行求和计算公式
  12. 02-pandas数据分析库
  13. Python练习题答案: 转换货币II【难度:2级】--景越Python编程实例训练营,1000道上机题等你来挑战
  14. 1037u支持64位linux吗,树莓派B+ BCM2835 vs Celeron 1037U性能对比测试
  15. 进击高手【第四期】(bfs)
  16. SparkStreaming 实时计算 广告点击流量实时统计 需求 技术方案数据库设计
  17. 关于计算机设计的英语作文,计算机专业毕业设计 英文文献(含译文).pdf
  18. HTTPError: 404 Client Error: Not Found for url: https://mirrors.cn/anaconda/pkgs/free
  19. ios跟android有什么区别,ios 系统和安卓系统在交互层面上有何区别?
  20. Java图片识别技术

热门文章

  1. CSS 入门2(样式属性+元素溢出+显示特性+盒子模型)
  2. 【Python基础】Python语法入门
  3. 工作、求职需要记住的英文缩写,offer讨论避免尴尬
  4. Russia Proposes First Multinational Cryptocurrency
  5. 等位点数值差对迭代次数的影响
  6. 第一性原理·非线性成长·人生模式
  7. 开源大数据技术社区召集令
  8. 边框自定义,border-image助你一臂之力。
  9. 前端--HTML入门
  10. Web-HTML+CSS入门笔记