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中几个常用的类方法
Apr 08 Python
Python实现计算文件夹下.h和.cpp文件的总行数
Apr 23 Python
Python编写生成验证码的脚本的教程
May 04 Python
Python实现求数列和的方法示例
Jan 12 Python
详解Python爬取并下载《电影天堂》3千多部电影
Apr 26 Python
python3实现小球转动抽奖小游戏
Apr 15 Python
Python中单线程、多线程和多进程的效率对比实验实例
May 14 Python
Python中print函数简单使用总结
Aug 05 Python
Python编程快速上手——PDF文件操作案例分析
Feb 28 Python
numpy中生成随机数的几种常用函数(小结)
Aug 18 Python
详解python的内存分配机制
May 10 Python
python基础之错误和异常处理
Oct 24 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
Javascript Math ceil()、floor()、round()三个函数的区别
2010/03/09 Javascript
扩展jquery实现客户端表格的分页、排序功能代码
2011/03/16 Javascript
jQuery 写的简单打字游戏可以提示正确和错误的次数
2014/07/01 Javascript
动态创建按钮的JavaScript代码
2016/01/29 Javascript
JavaScript中数组添加值和访问值常见问题
2016/02/06 Javascript
JavaScript 数组中最大最小值
2016/06/05 Javascript
详解使用Node.js 将txt文件转为Excel文件
2017/07/05 Javascript
vuex的使用及持久化state的方式详解
2018/01/23 Javascript
详解为生产环境编译Angular2应用的方法
2018/12/10 Javascript
node错误处理与日志记录的实现
2018/12/24 Javascript
微信小程序实现录音功能
2019/11/22 Javascript
js实现div色块碰撞
2020/01/16 Javascript
[36:52]DOTA2真视界:基辅特锦赛总决赛
2017/05/21 DOTA
Linux系统上Nginx+Python的web.py与Django框架环境
2015/12/25 Python
python使用电子邮件模块smtplib的方法
2016/08/28 Python
简单谈谈python中的多进程
2016/11/06 Python
python 简单的绘图工具turtle使用详解
2017/06/21 Python
速记Python布尔值
2017/11/09 Python
python获取程序执行文件路径的方法(推荐)
2018/04/26 Python
python字符串常用方法
2018/06/14 Python
Linux下python3.6.1环境配置教程
2018/09/26 Python
Python Image模块基本图像处理操作小结
2019/04/13 Python
Python函数的定义方式与函数参数问题实例分析
2019/12/26 Python
tensorflow 初始化未初始化的变量实例
2020/02/06 Python
python中函数返回多个结果的实例方法
2020/12/16 Python
css3 border-image使用说明
2010/06/23 HTML / CSS
让IE下支持Html5的placeholder属性的插件
2014/09/02 HTML / CSS
澳大利亚最大的女装零售商:Millers
2017/09/10 全球购物
物业经理求职自我评价
2013/09/22 职场文书
护理专业毕业生自我鉴定
2013/10/08 职场文书
网络信息管理员岗位职责
2014/01/05 职场文书
四年级数学教学反思
2014/02/02 职场文书
五好党支部事迹材料
2014/02/06 职场文书
节能环保家庭事迹材料
2014/08/27 职场文书
成都人事代理协议书
2014/10/25 职场文书
MySQL时间设置注意事项的深入总结
2021/05/06 MySQL