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之字典,你还记得吗?
Sep 20 Python
Python连接SQLServer2000的方法详解
Apr 19 Python
PyQt4实现下拉菜单可供选择并打印出来
Apr 20 Python
对python Tkinter Text的用法详解
Oct 11 Python
python绘制漏斗图步骤详解
Mar 04 Python
python 为什么说eval要慎用
Mar 26 Python
python的re模块使用方法详解
Jul 26 Python
使用python切片实现二维数组复制示例
Nov 26 Python
pytorch中的transforms模块实例详解
Dec 31 Python
Python Pillow.Image 图像保存和参数选择方式
Jan 09 Python
python 实现学生信息管理系统的示例
Nov 28 Python
解决pytorch 模型复制的一些问题
Mar 03 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 Stream_*系列函数
2010/08/01 PHP
ThinkPHP连接Oracle数据库
2016/04/22 PHP
magento后台无法登录解决办法的两种方法
2016/12/09 PHP
JS 学习笔记 防止发生命名冲突
2009/07/30 Javascript
Jquery 监视按键,按下回车键触发某方法的实现代码
2014/05/11 Javascript
手写的一个兼容各种浏览器的javascript getStyle函数(获取元素的样式)
2014/06/06 Javascript
iframe跨域通信封装详解
2015/08/11 Javascript
js实现n秒倒计时后才可以点击的效果
2015/12/20 Javascript
AngualrJS中的Directive制作一个菜单
2016/01/26 Javascript
javascript实现label标签跳出循环操作
2016/03/06 Javascript
星期几的不同脚本写法(推荐)
2016/06/01 Javascript
全面理解闭包机制
2016/07/11 Javascript
通过jquery实现页面的动画效果(实例代码)
2016/09/18 Javascript
react-router JS 控制路由跳转实例
2017/06/15 Javascript
jQuery:unbind方法的使用详解
2017/08/14 jQuery
详解在WebStorm中添加Vue.js单文件组件的高亮及语法支持
2017/10/21 Javascript
JavaScript实现带有子菜单和控件的slider轮播图效果
2017/11/01 Javascript
微信小程序自定义组件实现tabs选项卡功能
2018/07/14 Javascript
webstrom Debug 调试vue项目的方法步骤
2018/07/17 Javascript
vue.js提交按钮时进行简单的if判断表达式详解
2018/08/08 Javascript
五分钟搞懂Vuex实用知识(小结)
2019/08/12 Javascript
使用JS location实现搜索框历史记录功能
2019/12/23 Javascript
Django 创建后台,配置sqlite3教程
2019/11/18 Python
Python namedtuple命名元组实现过程解析
2020/01/08 Python
PyCharm License Activation激活码失效问题的解决方法(图文详解)
2020/03/12 Python
浅谈在django中使用redirect重定向数据传输的问题
2020/03/13 Python
python中用Scrapy实现定时爬虫的实例讲解
2021/01/18 Python
HTML5自定义元素播放焦点图动画的实现
2019/09/25 HTML / CSS
StubHub巴西:购买和出售您的门票
2016/07/22 全球购物
Clarks鞋法国官方网站:英国其乐鞋品牌
2018/02/11 全球购物
办公室经理岗位职责
2014/01/01 职场文书
小公司融资,商业计划书的8切记
2019/07/15 职场文书
2019辞职报告范本3篇!
2019/07/23 职场文书
Java生成读取条形码和二维码的简单示例
2021/07/09 Java/Android
MySQL实现配置主从复制项目实践
2022/03/31 MySQL
Python爬取奶茶店数据分析哪家最好喝以及性价比
2022/09/23 Python