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 13 Python
Python语言技巧之三元运算符使用介绍
Mar 04 Python
在Docker上开始部署Python应用的教程
Apr 17 Python
python使用matplotlib绘制柱状图教程
Feb 08 Python
Android 兼容性问题:java.lang.UnsupportedOperationException解决办法
Mar 19 Python
Python中创建字典的几种方法总结(推荐)
Apr 27 Python
TensorFlow深度学习之卷积神经网络CNN
Mar 09 Python
python实现微信机器人: 登录微信、消息接收、自动回复功能
Apr 29 Python
Ubuntu18.04中Python2.7与Python3.6环境切换
Jun 14 Python
Tkinter中复选菜单是否被选中的判断与设置方式
Mar 04 Python
python 实现两个线程交替执行
May 02 Python
Python pexpect模块及shell脚本except原理解析
Aug 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
ThinkPHP入口文件设置及相关注意事项分析
2014/12/05 PHP
laravel实现简单用户权限的示例代码
2019/05/28 PHP
php 使用ActiveMQ发送消息,与处理消息操作示例
2020/02/23 PHP
复制本贴标题和地址的js代码
2008/07/01 Javascript
Jquery中的CheckBox、RadioButton、DropDownList的取值赋值实现代码
2011/10/12 Javascript
jQuery+AJAX实现网页无刷新上传
2015/02/22 Javascript
jQuery简单实现QQ空间点赞已经取消点赞
2015/04/02 Javascript
js实现表单Radio切换效果的方法
2015/08/17 Javascript
jquery实现手风琴效果
2015/11/20 Javascript
JavaScript操作 url 中 search 部分方法函数
2016/06/15 Javascript
每日十条JavaScript经验技巧(一)
2016/06/23 Javascript
PHP+jquery+ajax实现分页
2016/12/09 Javascript
Bootstrap显示与隐藏简单实现代码
2017/03/06 Javascript
jquery 键盘事件的使用方法详解
2017/09/13 jQuery
JavaScript实现省市联动过程中bug的解决方法
2017/12/04 Javascript
讲解vue-router之什么是编程式路由
2018/05/28 Javascript
javascript异常处理实现原理详解
2020/02/17 Javascript
《javascript设计模式》学习笔记一:Javascript面向对象程序设计对象成员的定义分析
2020/04/07 Javascript
vue实现列表拖拽排序的功能
2020/11/02 Javascript
python 不关闭控制台的实现方法
2011/10/23 Python
解析Python中的__getitem__专有方法
2016/06/27 Python
python自动裁剪图像代码分享
2017/11/25 Python
python机器学习之KNN分类算法
2018/08/29 Python
pyhanlp安装介绍和简单应用
2019/02/22 Python
python3在同一行内输入n个数并用列表保存的例子
2019/07/20 Python
python下对hsv颜色空间进行量化操作
2020/06/04 Python
Python3 pyecharts生成Html文件柱状图及折线图代码实例
2020/09/29 Python
Canvas引入跨域的图片导致toDataURL()报错的问题的解决
2018/09/19 HTML / CSS
您附近的水疗和健康场所:Spafinder(美国)
2019/07/05 全球购物
Lentiamo荷兰:在线订购隐形眼镜、隐形眼镜液和太阳镜
2019/10/25 全球购物
挑战杯创业计划书的写作指南
2014/01/07 职场文书
小学生评语集锦
2014/04/18 职场文书
商务司机岗位职责
2015/04/10 职场文书
新员工入职感言范文!
2019/07/04 职场文书
Java移除无效括号的方法实现
2021/08/07 Java/Android
Python中with上下文管理协议的作用及用法
2022/03/18 Python