Python Scrapy图片爬取原理及代码实例


Posted in Python onJune 12, 2020

1.在爬虫文件中只需要解析提取出图片地址,然后将地址提交给管道

在管道文件对图片进行下载和持久化存储

class ImgSpider(scrapy.Spider):
  name = 'img'
  # allowed_domains = ['www.xxx.com']
  start_urls = ['http://www.521609.com/daxuemeinv/']
  url = 'http://www.521609.com/daxuemeinv/list8%d.html'
  pageNum = 1
  def parse(self, response):
    li_list = response.xpath('//*[@id="content"]/div[2]/div[2]/ul/li')
    for li in li_list:
      img_src = 'http://www.521609.com'+li.xpath('./a[1]/img/@src').extract_first()
      item = ImgproItem()
      item['src'] = img_src

      yield item

2.配置文件修改

配置文件要增加IMAGES_STORE = './imgsLib'表明图片存放的路径

3.管道类的修改

原本管道类继承的object,处理item对象使用时process_item方法,该方法不能发送请求,要想对图片地址发送请求,需要继承ImagesPipeline类,然后重写该类中的三个方法:get_media_requests,file_path,item_completed

from scrapy.pipelines.images import ImagesPipeline
import scrapy

class ImgproPipeline(ImagesPipeline):

  #对某一个媒体资源进行请求发送
  #item就是接收到的spider提交过来的item
  def get_media_requests(self, item, info):
    yield scrapy.Request(item['src'])

  #制定媒体数据存储的名称
  def file_path(self, request, response=None, info=None):
    name = request.url.split('/')[-1]
    print('正在下载:',name)
    return name

  #将item传递给下一个即将给执行的管道类
  def item_completed(self, results, item, info):
    return item

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
在Python中使用PIL模块对图片进行高斯模糊处理的教程
May 05 Python
Python减少循环层次和缩进的技巧分析
Mar 15 Python
老生常谈Python进阶之装饰器
May 11 Python
浅谈python numpy中nonzero()的用法
Apr 02 Python
python检测空间储存剩余大小和指定文件夹内存占用的实例
Jun 11 Python
Django中使用Celery的教程详解
Aug 24 Python
Python Pandas批量读取csv文件到dataframe的方法
Oct 08 Python
python创建文件时去掉非法字符的方法
Oct 31 Python
python随机在一张图像上截取任意大小图片的方法
Jan 24 Python
python聚类算法解决方案(rest接口/mpp数据库/json数据/下载图片及数据)
Aug 28 Python
关于tf.reverse_sequence()简述
Jan 20 Python
关于jupyter打开之后不能直接跳转到浏览器的解决方式
Apr 13 Python
Python Scrapy多页数据爬取实现过程解析
Jun 12 #Python
Selenium自动化测试工具使用方法汇总
Jun 12 #Python
Python使用socketServer包搭建简易服务器过程详解
Jun 12 #Python
Django之腾讯云短信的实现
Jun 12 #Python
python相对企业语言优势在哪
Jun 12 #Python
keras实现基于孪生网络的图片相似度计算方式
Jun 11 #Python
为什么说python适合写爬虫
Jun 11 #Python
You might like
PHP array操作10个小技巧分享
2011/06/23 PHP
php设计模式之命令模式使用示例
2014/03/02 PHP
ThinkPHP开发框架函数详解:C方法
2015/08/14 PHP
php读取torrent种子文件内容的方法(测试可用)
2016/05/03 PHP
PHP安装GeoIP扩展根据IP获取地理位置及计算距离的方法
2016/07/01 PHP
PHP内存缓存功能memcached示例
2016/10/19 PHP
php使用环形链表解决约瑟夫问题完整示例
2018/08/07 PHP
IE与Firefox在JavaScript上的7个不同写法小结
2009/09/14 Javascript
ASP中Sub和Function的区别说明
2020/08/30 Javascript
jquery文本框中的事件应用以输入邮箱为例
2014/05/06 Javascript
JS实现鼠标滑过折叠与展开菜单效果代码
2015/09/06 Javascript
JavaScript实现跑马灯抽奖活动实例代码解析与优化(二)
2016/02/16 Javascript
AngularJS入门教程之链接与图片模板详解
2016/08/19 Javascript
判断数组的最佳方法(推荐)
2016/10/11 Javascript
原生js实现新闻列表展开/收起全文功能
2017/01/20 Javascript
Jquery鼠标放上去显示全名的实现方法
2017/02/06 Javascript
jQuery基本选择器和层次选择器学习使用
2017/02/27 Javascript
图解NodeJS实现登录注册功能
2019/09/16 NodeJs
JS实现页面侧边栏效果探究
2021/01/08 Javascript
[56:00]DOTA2上海特级锦标赛主赛事日 - 4 胜者组决赛Secret VS Liquid第一局
2016/03/05 DOTA
浅谈Pandas中map, applymap and apply的区别
2018/04/10 Python
Python之list对应元素求和的方法
2018/06/28 Python
django rest framework vue 实现用户登录详解
2019/07/29 Python
Python使用贪婪算法解决问题
2019/10/22 Python
Python文本处理简单易懂方法解析
2019/12/19 Python
tensorflow实现tensor中满足某一条件的数值取出组成新的tensor
2020/01/04 Python
Python连接字符串过程详解
2020/01/06 Python
python数据类型可变不可变知识点总结
2020/03/06 Python
CSS3中Color的一些特性介绍
2012/05/27 HTML / CSS
微信html5页面调用第三方位置导航的示例
2018/03/14 HTML / CSS
无谷物狗粮:Pooch & Mutt
2018/05/23 全球购物
美国专业汽车音响和移动电子产品零售商:Car Toys
2019/05/13 全球购物
班级学雷锋活动总结
2014/06/26 职场文书
爱护公共设施倡议书
2014/08/29 职场文书
群众路线教育实践活动个人对照检查材料
2014/09/22 职场文书
计生办班子群众路线教育实践活动个人对照检查材料思想汇报
2014/10/04 职场文书