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利用正则表达式排除集合中字符的功能示例
Oct 10 Python
解决python3中自定义wsgi函数,make_server函数报错的问题
Nov 21 Python
python3.x上post发送json数据
Mar 04 Python
Python实现的HMacMD5加密算法示例
Apr 03 Python
python中subprocess批量执行linux命令
Apr 27 Python
python写入已存在的excel数据实例
May 03 Python
解决安装tensorflow遇到无法卸载numpy 1.8.0rc1的问题
Jun 13 Python
Python分支语句与循环语句应用实例分析
May 07 Python
python pyenv多版本管理工具的使用
Dec 23 Python
tensorflow 初始化未初始化的变量实例
Feb 06 Python
Python如何重新加载模块
Jul 29 Python
Python实现信息轰炸工具(再也不怕说不过别人了)
Jun 11 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
德生PL450的电路分析和低放电路的改进办法
2021/03/02 无线电
PHP数组实例总结与说明
2011/08/23 PHP
php UBB 解析实现代码
2011/11/27 PHP
php遍历文件夹所有文件子文件夹函数代码
2013/11/27 PHP
PHP集成百度Ueditor 1.4.3
2014/11/23 PHP
PHP中new static() 和 new self() 的区别介绍
2015/01/09 PHP
PHP文件上传处理案例分析
2016/10/15 PHP
让ThinkPHP的模板引擎达到最佳效率的方法详解
2017/03/14 PHP
Laravel 5.4向IoC容器中添加自定义类的方法示例
2017/08/15 PHP
js或css实现滚动广告的几种方案
2010/01/28 Javascript
jQuery选中select控件 无法设置selected的解决方法
2010/09/01 Javascript
页面使用密码保护代码
2013/04/10 Javascript
javascript窗口宽高,鼠标位置,滚动高度(详细解析)
2013/11/18 Javascript
jquery操作HTML5 的data-*的用法实例分享
2014/08/17 Javascript
原生javascript实现DIV拖拽并计算重复面积
2015/01/02 Javascript
逐一介绍Jquery data()、Jquery stop()、jquery delay()函数(详)
2015/11/04 Javascript
封装属于自己的JS组件
2016/01/27 Javascript
JavaScript中全选、全不选、反选、无刷新删除、批量删除、即点即改入库(在yii框架中操作)的代码分享
2016/11/01 Javascript
使用validate.js实现表单数据提交前的验证方法
2018/09/04 Javascript
用Vue编写抽象组件的方法
2019/05/06 Javascript
Python中的tuple元组详细介绍
2015/02/02 Python
python实现文本文件合并
2015/12/29 Python
python enumerate函数的使用方法总结
2017/11/15 Python
python得到一个excel的全部sheet标签值方法
2018/12/10 Python
python实现共轭梯度法
2019/07/03 Python
PyQt+socket实现远程操作服务器的方法示例
2019/08/22 Python
Python3+SQLAlchemy+Sqlite3实现ORM教程
2021/02/16 Python
惠而浦美国官网:Whirlpool.com
2021/01/19 全球购物
机电专业毕业生推荐信
2013/11/10 职场文书
国际贸易专业求职信
2014/06/04 职场文书
教师聘用意向书
2015/05/11 职场文书
企业催款函范本
2015/06/24 职场文书
采购部2015年度工作总结
2015/07/24 职场文书
详解Nginx 工作原理
2021/03/31 Servers
Python 文本滚动播放器的实现代码
2021/04/25 Python
苹果电脑mac os中货币符号快捷输入
2022/02/17 杂记