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中的pprint折腾记
Jan 21 Python
python计算时间差的方法
May 20 Python
13个最常用的Python深度学习库介绍
Oct 28 Python
Python遍历某目录下的所有文件夹与文件路径
Mar 15 Python
python 正确保留多位小数的实例
Jul 16 Python
Pycharm无法显示动态图片的解决方法
Oct 28 Python
python3应用windows api对后台程序窗口及桌面截图并保存的方法
Aug 27 Python
基于Python实现拆分和合并GIF动态图
Oct 22 Python
python模式 工厂模式原理及实例详解
Feb 11 Python
Python Scrapy框架:通用爬虫之CrawlSpider用法简单示例
Apr 11 Python
python如何求100以内的素数
May 27 Python
pyqt5 textEdit、lineEdit操作的示例代码
Aug 12 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之apc
2013/05/15 PHP
PHP实现的MongoDB数据库操作类分享
2014/05/12 PHP
PHP简单处理表单输入的特殊字符的方法
2016/02/03 PHP
php版微信公众平台开发之验证步骤实例详解
2016/09/23 PHP
Laravel模型事件的实现原理详解
2018/03/14 PHP
PHP实现上传图片到数据库并显示输出的方法
2018/05/31 PHP
2010年最佳jQuery插件整理
2010/12/06 Javascript
jquery插件开发方法(初学者)
2012/02/03 Javascript
JS格式化数字保留两位小数点示例代码
2013/10/15 Javascript
jquery五角星评分插件示例分享
2014/02/21 Javascript
JS在可编辑的div中的光标位置插入内容的方法
2014/11/20 Javascript
jQuery提示插件alertify使用指南
2015/04/21 Javascript
JavaScript+html5 canvas绘制渐变区域完整实例
2016/01/26 Javascript
jQuery插件fullPage.js实现全屏滚动效果
2016/12/02 Javascript
用p5.js制作烟花特效的示例代码
2018/03/21 Javascript
浅析前端路由简介以及vue-router实现原理
2018/06/01 Javascript
Vue-cli配置打包文件本地使用的教程图解
2018/08/02 Javascript
python实现简单的计时器功能函数
2015/03/14 Python
Python每天必学之bytes字节
2016/01/28 Python
Python中你应该知道的一些内置函数
2017/03/31 Python
Python代码实现http/https代理服务器的脚本
2019/08/12 Python
Python使用pymysql模块操作mysql增删改查实例分析
2019/12/19 Python
Python优秀开源项目Rich源码解析的流程分析
2020/07/06 Python
Kenneth Cole官网:纽约时尚优雅品牌
2016/11/14 全球购物
AVIS安飞士奥地利租车官网:提供奥地利、欧洲和全世界汽车租赁
2016/11/29 全球购物
英语专业毕业生自荐信范文
2013/12/31 职场文书
中国梦主题教育活动总结
2014/05/05 职场文书
服装仓管员岗位职责
2014/06/17 职场文书
大学生简历求职信
2014/06/24 职场文书
销售经理助理岗位职责
2015/04/13 职场文书
推广普通话宣传标语口号
2015/12/26 职场文书
教师反邪教心得体会
2016/01/15 职场文书
Python基础详解之邮件处理
2021/04/28 Python
TV动画《八十龟酱观察日记》第四季宣传PV公布
2022/04/06 日漫
python区块链持久化和命令行接口实现简版
2022/05/25 Python
Springboot集成kafka高级应用实战分享
2022/08/14 Java/Android