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概率计算器实例分析
Mar 25 Python
python 计算文件的md5值实例
Jan 13 Python
机器学习10大经典算法详解
Dec 07 Python
django中的HTML控件及参数传递方法
Mar 20 Python
Python数据结构之图的应用示例
May 11 Python
啥是佩奇?使用Python自动绘画小猪佩奇的代码实例
Feb 20 Python
Python流程控制 while循环实现解析
Sep 02 Python
python 利用turtle库绘制笑脸和哭脸的例子
Nov 23 Python
flask实现验证码并验证功能
Dec 05 Python
PyTorch实现更新部分网络,其他不更新
Dec 31 Python
python实现测试工具(一)——命令行发送get请求
Oct 19 Python
python制作图形界面的2048游戏, 基于tkinter
Apr 06 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
PHP通过串口实现发送短信
2015/07/08 PHP
laravel orm 关联条件查询代码
2019/10/21 PHP
Nigma vs Alliance BO5 第五场2.14
2021/03/10 DOTA
在JavaScript中判断整型的N种方法示例介绍
2014/06/18 Javascript
Node.js异步I/O学习笔记
2014/11/04 Javascript
使用jQueryMobile实现滑动翻页效果的方法
2015/02/04 Javascript
Bootstrap中文本框的宽度变窄并且加入一副验证码图片的实现方法
2016/06/23 Javascript
JS简单获取当前年月日星期的方法示例
2017/02/07 Javascript
javascript深拷贝的原理与实现方法分析
2017/04/10 Javascript
jQuery插件开发发送短信倒计时功能代码
2017/05/09 jQuery
详解vue.js移动端导航navigationbar的封装
2017/07/05 Javascript
js实现控制文件拖拽并获取拖拽内容功能
2018/02/17 Javascript
微信小程序学习笔记之文件上传、下载操作图文详解
2019/03/29 Javascript
JavaScript实现美化滑块效果
2019/05/17 Javascript
JavaScript函数IIFE使用详解
2019/10/21 Javascript
python分析nignx访问日志脚本分享
2015/02/26 Python
python xml解析实例详解
2016/11/14 Python
Python 文件操作的详解及实例
2017/09/18 Python
利用python实现简单的邮件发送客户端示例
2017/12/23 Python
Python深拷贝与浅拷贝用法实例分析
2019/05/05 Python
详解Python二维数组与三维数组切片的方法
2019/07/18 Python
python3的UnicodeDecodeError解决方法
2019/12/20 Python
html5摇一摇代码优化包括DeviceMotionEvent等等
2014/09/01 HTML / CSS
Canvas globalCompositeOperation
2018/12/18 HTML / CSS
英国领先的新鲜松露和最好的松露产品供应商:TruffleHunter
2019/08/26 全球购物
敏捷开发的主要原则都有哪些
2015/04/26 面试题
麦当劳辞职信范文
2014/01/18 职场文书
公司拓展活动方案
2014/02/13 职场文书
党的群众路线教育实践活动个人整改落实情况汇报
2014/10/28 职场文书
整改报告怎么写
2014/11/06 职场文书
中学教师个人总结
2015/02/10 职场文书
python munch库的使用解析
2021/05/25 Python
Python实现的扫码工具居然这么好用!
2021/06/07 Python
浅谈MySQL表空间回收的正确姿势
2021/10/05 MySQL
TV动画《史上最强大魔王转生为村民A》番宣CM公布
2022/04/01 日漫