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 18 Python
详解Python中dict与set的使用
Aug 10 Python
Python连接MySQL并使用fetchall()方法过滤特殊字符
Mar 13 Python
Python实现中文数字转换为阿拉伯数字的方法示例
May 26 Python
Python双精度浮点数运算并分行显示操作示例
Jul 21 Python
python linecache 处理固定格式文本数据的方法
Jan 08 Python
Python中面向对象你应该知道的一下知识
Jul 10 Python
Python3的高阶函数map,reduce,filter的示例详解
Jul 23 Python
GDAL 矢量属性数据修改方式(python)
Mar 10 Python
Python3使用tesserocr识别字母数字验证码的实现
Jan 29 Python
python随机打印成绩排名表
Jun 23 Python
python语言中pandas字符串分割str.split()函数
Aug 05 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制作图型计数器的例子
2006/10/09 PHP
一步一步学习PHP(1) php开发环境配置
2010/02/15 PHP
php编程实现获取excel文档内容的代码实例
2011/06/28 PHP
Linux下PHP加速器APC的安装与配置笔记
2014/10/24 PHP
3款值得推荐的微信开发开源框架
2014/10/28 PHP
PHP经典面试题之设计模式(经常遇到)
2015/10/15 PHP
PHP设计模式之观察者模式实例
2016/02/22 PHP
禁止选中文字兼容IE、Chrome、FF等
2013/09/04 Javascript
jquery实现个人中心导航菜单效果和美观都非常不错
2014/09/02 Javascript
javascript控制台详解
2015/06/25 Javascript
JS仿hao123导航页面图片轮播效果
2016/09/01 Javascript
利用Angularjs实现幻灯片效果
2016/09/07 Javascript
详解Js中的模块化是如何实现的
2017/10/18 Javascript
JS组件系列之Gojs组件 前端图形化插件之利器
2017/11/29 Javascript
实战node静态文件服务器的示例代码
2018/03/08 Javascript
JS实现的3des+base64加密解密算法完整示例
2018/05/18 Javascript
vue-router重写push方法,解决相同路径跳转报错问题
2020/08/07 Javascript
Vue-cli 移动端布局和动画使用详解
2020/08/10 Javascript
vscode自定义vue模板的实现
2021/01/27 Vue.js
Python enumerate遍历数组示例应用
2008/09/06 Python
python模拟鼠标拖动操作的方法
2015/03/11 Python
深入解析Python中的集合类型操作符
2015/08/19 Python
python使用psutil模块获取系统状态
2016/08/27 Python
Python中字符串的处理技巧分享
2016/09/17 Python
酷! 程序员用Python带你玩转冲顶大会
2018/01/17 Python
详解Python 协程的详细用法使用和例子
2018/06/15 Python
符合语言习惯的 Python 优雅编程技巧【推荐】
2018/09/25 Python
浅谈Python爬虫原理与数据抓取
2020/07/21 Python
女方回门宴答谢词
2014/01/14 职场文书
班级德育工作实施方案
2014/02/21 职场文书
乡镇安全生产月活动总结
2015/05/08 职场文书
信仰观后感
2015/06/03 职场文书
2015重阳节敬老活动总结
2015/07/29 职场文书
Python制作表白爱心合集
2022/01/22 Python
mysql 获取相邻数据项
2022/05/11 MySQL
MySQL数据库查询之多表查询总结
2022/08/05 MySQL