Python爬虫框架scrapy实现的文件下载功能示例


Posted in Python onAugust 04, 2018

本文实例讲述了Python爬虫框架scrapy实现的文件下载功能。分享给大家供大家参考,具体如下:

我们在写普通脚本的时候,从一个网站拿到一个文件的下载url,然后下载,直接将数据写入文件或者保存下来,但是这个需要我们自己一点一点的写出来,而且反复利用率并不高,为了不重复造轮子,scrapy提供很流畅的下载文件方式,只需要随便写写便可用了。

mat.py文件

# -*- coding: utf-8 -*-
import scrapy
from scrapy.linkextractor import LinkExtractor
from weidashang.items import matplotlib
class MatSpider(scrapy.Spider):
  name = "mat"
  allowed_domains = ["matplotlib.org"]
  start_urls = ['https://matplotlib.org/examples']
  def parse(self, response):


 #抓取每个脚本文件的访问页面,拿到后下载
    link = LinkExtractor(restrict_css='div.toctree-wrapper.compound li.toctree-l2')
    for link in link.extract_links(response):
      yield scrapy.Request(url=link.url,callback=self.example)
  def example(self,response):



#进入每个脚本的页面,抓取源码文件按钮,并和base_url结合起来形成一个完整的url
    href = response.css('a.reference.external::attr(href)').extract_first()
    url = response.urljoin(href)
    example = matplotlib()
    example['file_urls'] = [url]
    return example

pipelines.py

class MyFilePlipeline(FilesPipeline):
  def file_path(self, request, response=None, info=None):
    path = urlparse(request.url).path
    return join(basename(dirname(path)),basename(path))

settings.py

ITEM_PIPELINES = {
  'weidashang.pipelines.MyFilePlipeline': 1,
}
FILES_STORE = 'examples_src'

items.py

class matplotlib(Item):
  file_urls = Field()
  files = Field()

run.py

from scrapy.cmdline import execute
execute(['scrapy', 'crawl', 'mat','-o','example.json'])

更多关于Python相关内容可查看本站专题:《Python Socket编程技巧总结》、《Python正则表达式用法总结》、《Python数据结构与算法教程》、《Python函数使用技巧总结》、《Python字符串操作技巧汇总》、《Python入门与进阶经典教程》及《Python文件与目录操作技巧汇总》

希望本文所述对大家Python程序设计有所帮助。

Python 相关文章推荐
python实现的各种排序算法代码
Mar 04 Python
python检查序列seq是否含有aset中项的方法
Jun 30 Python
PYTHON发送邮件YAGMAIL的简单实现解析
Oct 28 Python
python GUI库图形界面开发之PyQt5表单布局控件QFormLayout详细使用方法与实例
Mar 06 Python
django rest framework 过滤时间操作
Jul 12 Python
matplotlib基础绘图命令之bar的使用方法
Aug 13 Python
python 实现表情识别
Nov 21 Python
Python爬虫之Selenium中frame/iframe表单嵌套页面
Dec 04 Python
python的setattr函数实例用法
Dec 16 Python
jupyter notebook保存文件默认路径更改方法汇总(亲测可以)
Jun 09 Python
Python闭包的定义和使用方法
Apr 11 Python
python生成1行四列全2矩阵的方法
Aug 04 #Python
查看python下OpenCV版本的方法
Aug 03 #Python
Python 使用PIL中的resize进行缩放的实例讲解
Aug 03 #Python
numpy中loadtxt 的用法详解
Aug 03 #Python
matplotlib给子图添加图例的方法
Aug 03 #Python
matplotlib调整子图间距,调整整体空白的方法
Aug 03 #Python
Numpy之文件存取的示例代码
Aug 03 #Python
You might like
php购物网站支付paypal使用方法
2010/11/28 PHP
php绘图之生成饼状图的方法
2015/01/24 PHP
PHP中的多种加密技术及代码示例解析
2016/10/20 PHP
firefox事件处理之自动查找event的函数(用于onclick=foo())
2010/08/05 Javascript
12款经典的白富美型—jquery图片轮播插件—前端开发必备
2013/01/08 Javascript
JS清除IE浏览器缓存的方法
2013/07/26 Javascript
Javascript的闭包详解
2014/12/26 Javascript
基于JavaScript实现表单密码的隐藏和显示出来
2016/03/02 Javascript
JavaScript中关于for循环删除数组元素内容时出现的问题
2016/11/21 Javascript
深入理解JS继承和原型链的问题
2016/12/17 Javascript
详解Vue 事件驱动和依赖追踪
2017/04/22 Javascript
Vue2 SSR渲染根据不同页面修改 meta
2017/11/20 Javascript
微信小程序中吸底按钮适配iPhone X方案
2017/11/29 Javascript
在小程序中集成redux/immutable/thunk第三方库的方法
2018/08/12 Javascript
JS实现获取毫秒值及转换成年月日时分秒的方法
2018/08/15 Javascript
浅谈在Vue.js中如何实现时间转换指令
2019/01/06 Javascript
vue项目中仿element-ui弹框效果的实例代码
2019/04/22 Javascript
深入了解JavaScript 私有化
2019/05/30 Javascript
Python OpenCV获取视频的方法
2018/02/28 Python
神经网络(BP)算法Python实现及应用
2018/04/16 Python
解决Django的request.POST获取不到内容的问题
2018/05/28 Python
Python3.5基础之变量、数据结构、条件和循环语句、break与continue语句实例详解
2019/04/26 Python
python GUI库图形界面开发之PyQt5信号与槽的高级使用技巧装饰器信号与槽详细使用方法与实例
2020/03/06 Python
使用canvas压缩图片大小的方法示例
2019/08/02 HTML / CSS
物理教育专业毕业生推荐信
2013/11/03 职场文书
法学函授自我鉴定
2014/02/06 职场文书
2014厂务公开实施方案
2014/02/17 职场文书
关于读书的活动方案
2014/08/14 职场文书
群众路线对照检查材料思想汇报怎么写
2014/09/18 职场文书
师德师风建设整改措施思想汇报
2014/10/11 职场文书
中秋节慰问信
2015/02/15 职场文书
2015年感恩母亲节活动方案
2015/05/04 职场文书
单位实习介绍信
2015/05/05 职场文书
工伤劳动仲裁代理词
2015/05/25 职场文书
一篇带你入门Java垃圾回收器
2021/06/16 Java/Android
一篇文章带你了解Python和Java的正则表达式对比
2021/09/15 Python