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标准库中的wave模块绘制乐谱的简单教程
Mar 30 Python
对于Python的Django框架使用的一些实用建议
Apr 03 Python
python实现合并两个数组的方法
May 16 Python
python字符串,数值计算
Oct 05 Python
Python中str is not callable问题详解及解决办法
Feb 10 Python
Python根据当前日期取去年同星期日期
Apr 14 Python
Python求凸包及多边形面积教程
Apr 12 Python
Python爬虫之Selenium实现键盘事件
Dec 04 Python
浅谈盘点5种基于Python生成的个性化语音方法
Feb 05 Python
详解python字符串驻留技术
May 21 Python
matlab xlabel位置的设置方式
May 21 Python
OpenCV-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
二次元帅气男生排行榜,只想悄悄收藏系列
2020/03/04 日漫
PHP的FTP学习(一)
2006/10/09 PHP
一个简单的php实现的MySQL数据浏览器
2007/03/11 PHP
解析php函数method_exists()与is_callable()的区别
2013/06/21 PHP
PHP实现抽奖功能实例代码
2020/06/30 PHP
一份老外写的XMLHttpRequest代码多浏览器支持兼容性
2007/01/11 Javascript
自用js开发框架小成 学习js的朋友可以看看
2010/11/16 Javascript
解决jquery submit()提交表单提示:f[s] is not a function
2013/01/23 Javascript
深入document.write()与HTML4.01的非成对标签的详解
2013/05/08 Javascript
javascript中自定义对象的属性方法分享
2013/07/12 Javascript
js验证整数加保留小数点的简单实例
2013/12/02 Javascript
jquery获得option的值和对option进行操作
2013/12/13 Javascript
JQuery查找DOM节点的方法
2015/06/11 Javascript
AngularJS转换响应内容
2016/01/27 Javascript
基于Bootstrap+jQuery.validate实现表单验证
2016/05/30 Javascript
详解使用jQuery.i18n.properties实现js国际化
2018/05/04 jQuery
微信小程序实现购物页面左右联动
2019/02/15 Javascript
详解javascript中的Error对象
2019/04/25 Javascript
js实现网页版贪吃蛇游戏
2020/02/22 Javascript
ant design中upload组件上传大文件,显示进度条进度的实例
2020/10/29 Javascript
简化Python的Django框架代码的一些示例
2015/04/20 Python
简单介绍Python的Django框架的dj-scaffold项目
2015/05/30 Python
Python编程之基于概率论的分类方法:朴素贝叶斯
2017/11/11 Python
PyGame贪吃蛇的实现代码示例
2018/11/21 Python
python配置grpc环境
2019/01/01 Python
利用Python制作动态排名图的实现代码
2020/04/09 Python
Pytorch之扩充tensor的操作
2021/03/04 Python
canvas绘制图片drawImage使用方法
2020/09/15 HTML / CSS
UGG澳洲官网:UGG Australia
2018/04/26 全球购物
大学活动总结格式
2014/04/29 职场文书
硕士研究生就业推荐信
2014/05/18 职场文书
多媒体教室标语
2014/06/26 职场文书
调研汇报材料范文
2014/08/17 职场文书
迎新生标语大全
2014/10/06 职场文书
给老师的保证书怎么写
2015/05/09 职场文书
教你如何用cmd快速登录服务器
2022/06/10 Servers