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下使用Psyco模块优化运行速度
Apr 05 Python
简单介绍Python的轻便web框架Bottle
Apr 08 Python
Python中的字符串类型基本知识学习教程
Feb 04 Python
Python遍历目录中的所有文件的方法
Jul 08 Python
Django中数据库的数据关系:一对一,一对多,多对多
Oct 21 Python
学生信息管理系统Python面向对象版
Jan 30 Python
pytorch多进程加速及代码优化方法
Aug 19 Python
python处理document文档保留原样式
Sep 23 Python
在django中使用post方法时,需要增加csrftoken的例子
Mar 13 Python
Python基本的内置数据类型及使用方法
Apr 13 Python
Python可视化动图组件ipyvizzu绘制惊艳的可视化动图
Apr 21 Python
Django框架中表单的用法
Jun 10 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脚本数据库功能详解(下)
2006/10/09 PHP
PHPWind 发帖回帖Api PHP版打包下载
2010/02/08 PHP
[原创]PHP实现逐行删除文件右侧空格的方法
2015/12/25 PHP
javascript中检测变量的类型的代码
2010/12/28 Javascript
Extjs显示从数据库取出时间转换JSON后的出现问题
2012/11/20 Javascript
鼠标滚轮控制网页横向移动实现思路
2013/03/22 Javascript
jQuery 重复加载错误以及修复方法
2014/12/16 Javascript
JavaScript中停止执行setInterval和setTimeout事件的方法
2015/05/14 Javascript
Angular2从搭建环境到开发步骤详解
2016/10/17 Javascript
详解Angular的8个主要构造块
2017/06/20 Javascript
vue2.0中click点击当前li实现动态切换class
2017/06/21 Javascript
详解Vue-Cli 异步加载数据的一些注意点
2017/08/12 Javascript
如何抽象一个Vue公共组件
2017/10/17 Javascript
angularJs 表格添加删除修改查询方法
2018/02/27 Javascript
微信小程序分享海报生成的实现方法
2018/12/10 Javascript
angular6的table组件开发的实现示例
2018/12/26 Javascript
express启用https使用小记
2019/05/21 Javascript
详解django模板与vue.js冲突问题
2019/07/07 Javascript
微信小程序 select 下拉框组件功能
2019/09/09 Javascript
解决Vue 移动端点击出现300毫秒延迟的问题
2020/07/21 Javascript
[02:28]PWL开团时刻DAY3——Ink Ice与DeMonsTer之间的勾心斗角
2020/11/03 DOTA
跟老齐学Python之玩转字符串(2)
2014/09/14 Python
详解Python多线程
2016/11/14 Python
Python实现字典按照value进行排序的方法分析
2017/12/23 Python
美国Randolph太阳镜官网:美国制造的飞行员太阳镜和射击眼镜
2018/06/15 全球购物
英国现代、当代和设计师家具店:Furntastic
2020/07/18 全球购物
比较一下entity bean和session bean
2013/12/27 面试题
公司总经理工作职责管理办法
2014/02/28 职场文书
大班开学家长寄语
2014/04/04 职场文书
关于读书的演讲稿600字
2014/08/27 职场文书
仓库保管员岗位职责
2015/02/09 职场文书
公司聚餐通知
2015/04/22 职场文书
教师远程研修感悟
2015/11/18 职场文书
nginx实现发布静态资源的方法
2021/03/31 Servers
python用tkinter开发的扫雷游戏
2021/06/01 Python
Python上下文管理器Content Manager
2021/06/26 Python