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 相关文章推荐
用map函数来完成Python并行任务的简单示例
Apr 02 Python
Python3 模块、包调用&路径详解
Oct 25 Python
Python实现压缩文件夹与解压缩zip文件的方法
Sep 01 Python
详解Python字典小结
Oct 20 Python
Python实现从SQL型数据库读写dataframe型数据的方法【基于pandas】
Mar 18 Python
基于腾讯云服务器部署微信小程序后台服务(Python+Django)
May 08 Python
python实现日志按天分割
Jul 22 Python
安装python及pycharm的教程图解
Oct 10 Python
Python json模块与jsonpath模块区别详解
Mar 05 Python
python 链接sqlserver 写接口实例
Mar 11 Python
Python smtp邮件发送模块用法教程
Jun 15 Python
python接口自动化框架实战
Dec 23 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
图象函数中的中文显示
2006/10/09 PHP
谈谈PHP的输入输出流
2007/02/14 PHP
一个非常完美的读写ini格式的PHP配置类分享
2015/02/12 PHP
PHP.ini安全配置检测工具pcc简单介绍
2015/07/02 PHP
解决form中action属性后面?传递参数 获取不到的问题
2017/07/21 PHP
ajax 同步请求和异步请求的差异分析
2011/07/04 Javascript
HTML Color Picker(js拾色器效果)
2013/08/27 Javascript
JavaScript数字和字符串转换示例
2014/03/26 Javascript
js清空form表单中的内容示例
2014/05/20 Javascript
jquery实现多条件筛选特效代码分享
2015/08/28 Javascript
javascript实现延时显示提示框特效代码
2016/04/27 Javascript
浅析Javascript中bind()方法的使用与实现
2016/04/29 Javascript
基于Turn.js 实现翻书效果实例解析
2016/06/20 Javascript
JavaScript条件判断_动力节点Java学院整理
2017/06/26 Javascript
JavaScrip关于创建常量的知识点
2017/12/07 Javascript
vue+jquery+lodash实现滑动时顶部悬浮固定效果
2018/04/28 jQuery
最适应的vue.js的form提交涉及多种插件【推荐】
2018/08/27 Javascript
element上传组件循环引用及简单时间倒计时的实现
2018/10/01 Javascript
在layui中layer弹出层点击事件无效的解决方法
2019/09/05 Javascript
layui.use模块外部使用其内部定义的js封装函数方法
2019/09/16 Javascript
基于JS判断对象是否是数组
2020/01/10 Javascript
Python标准库之多进程(multiprocessing包)介绍
2014/11/25 Python
Python 自动补全(vim)
2014/11/30 Python
浅谈python和C语言混编的几种方式(推荐)
2017/09/27 Python
python遍历序列enumerate函数浅析
2017/10/17 Python
全球速卖通俄罗斯站:AliExpress俄罗斯
2019/06/17 全球购物
Mountain Warehouse波兰官方网站:英国户外品牌
2019/08/29 全球购物
UDP协议功能
2013/01/06 面试题
中文专业毕业生自荐书范文
2014/01/04 职场文书
重阳节登山活动方案
2014/02/03 职场文书
《美丽的南沙群岛》教学反思
2014/04/27 职场文书
2014领导班子专题民主生活会对照检查材料思想汇报
2014/09/23 职场文书
标准离婚协议书范文下载
2014/11/30 职场文书
学校运动会加油词
2015/07/18 职场文书
2015年卫生院健康教育工作总结
2015/07/24 职场文书
浅谈redis的过期时间设置和过期删除机制
2022/03/18 MySQL