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实现监控linux性能及进程消耗性能的方法
Jul 25 Python
Python和GO语言实现的消息摘要算法示例
Mar 10 Python
Python随手笔记第一篇(2)之初识列表和元组
Jan 23 Python
python基于itchat实现微信群消息同步机器人
Feb 27 Python
Python实现针对含中文字符串的截取功能示例
Sep 22 Python
Linux CentOS7下安装python3 的方法
Jan 21 Python
python 接收处理外带的参数方法
Dec 03 Python
Pandas时间序列重采样(resample)方法中closed、label的作用详解
Dec 10 Python
pytorch 实现tensor与numpy数组转换
Dec 27 Python
解决pyinstaller 打包exe文件太大,用pipenv 缩小exe的问题
Jul 13 Python
一文详述 Python 中的 property 语法
Sep 01 Python
Python实现粒子群算法的示例
Feb 14 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
计数器详细设计
2006/10/09 PHP
php面向对象全攻略 (六)__set() __get() __isset() __unset()的用法
2009/09/30 PHP
elgg 获取文件图标地址的方法
2010/03/20 PHP
php多任务程序实例解析
2014/07/19 PHP
PHP中array_map与array_column之间的关系分析
2014/08/19 PHP
实例讲解php数据访问
2016/05/09 PHP
基于php数组中的索引数组和关联数组详解
2018/03/12 PHP
PHP判断函数是否被定义的方法
2019/06/21 PHP
PHP如何开启Opcache功能提升程序处理效率
2020/04/27 PHP
JavaScript中的Screen屏幕对象
2008/01/16 Javascript
javascript 写类方式之六
2009/07/05 Javascript
div+css布局的图片连续滚动js实现代码
2010/05/04 Javascript
用jquery与css打造个性化的单选框和复选框
2010/10/20 Javascript
javascript垃圾收集机制与内存泄漏详细解析
2013/11/11 Javascript
javascript获取本机操作系统类型的方法
2015/08/13 Javascript
使用jquery提交form表单并自定义action的方法
2016/05/25 Javascript
XMLHttpRequest Level 2 使用指南
2016/08/26 Javascript
Bootstrap table右键功能实现方法
2017/02/20 Javascript
es6 字符串String的扩展(实例讲解)
2017/08/03 Javascript
vue-drag-chart 拖动/缩放图表组件的实例代码
2020/04/10 Javascript
[01:13]DOTA2群星解读国服召集令 一起说出回归的理由
2013/07/17 DOTA
python简单实现基数排序算法
2015/05/16 Python
Python实现替换文件中指定内容的方法
2018/03/19 Python
Python实现修改文件内容的方法分析
2018/03/25 Python
python实现自主查询实时天气
2018/06/22 Python
python3中函数参数的四种简单用法
2018/07/09 Python
在keras中获取某一层上的feature map实例
2020/01/24 Python
Windows下Pycharm远程连接虚拟机中Centos下的Python环境(图文教程详解)
2020/03/19 Python
PyQt5 如何让界面和逻辑分离的方法
2020/03/24 Python
css3中用animation的steps属性制作帧动画
2019/04/25 HTML / CSS
HTML5移动端手机网站开发流程
2016/04/25 HTML / CSS
PHP如何设置和取得Cookie值
2015/06/30 面试题
应届生服装设计自我评价
2013/09/20 职场文书
工作交流会欢迎词
2014/01/12 职场文书
年终晚会活动方案
2014/08/21 职场文书
Nginx已编译的nginx-添加新模块
2021/04/01 Servers