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中使用MELIAE分析程序内存占用实例
Feb 18 Python
python搭建虚拟环境的步骤详解
Sep 27 Python
Python正则表达式如何进行字符串替换实例
Dec 28 Python
python+matplotlib绘制饼图散点图实例代码
Jan 20 Python
python3爬虫获取html内容及各属性值的方法
Dec 17 Python
python 实现得到当前时间偏移day天后的日期方法
Dec 31 Python
Python 实现数据结构中的的栈队列
May 16 Python
python正则表达式实例代码
Mar 03 Python
PyTorch中torch.tensor与torch.Tensor的区别详解
May 18 Python
Python抓包并解析json爬虫的完整实例代码
Nov 03 Python
pandas 数据类型转换的实现
Dec 29 Python
移除Selenium中window.navigator.webdriver值
Jun 10 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字符编码转换之gb2312转为utf8
2013/10/28 PHP
PHP实现批量清空删除指定文件夹所有内容的方法
2017/05/30 PHP
php获取数据库结果集方法(推荐)
2017/06/01 PHP
js传值 判断
2006/10/26 Javascript
Ucren Virtual Desktop V2.0
2006/11/07 Javascript
了不起的node.js读书笔记之node.js中的特性
2014/12/22 Javascript
js与applet相互调用的方法
2016/06/22 Javascript
教你JS中的运算符乘方、开方及变量格式转换
2016/08/09 Javascript
基于Bootstrap的Metronic框架实现页面链接收藏夹功能
2016/08/29 Javascript
解决nodejs中使用http请求返回值为html时乱码的问题
2017/02/18 NodeJs
js实现导航吸顶效果
2017/02/24 Javascript
Omi v1.0.2发布正式支持传递javascript表达式
2017/03/21 Javascript
微信小程序组件 marquee实例详解
2017/06/23 Javascript
JS通过调用微信API实现微信支付功能的方法示例
2017/06/29 Javascript
微信小程序手机号码验证功能的实例代码
2018/08/28 Javascript
vue中的 $slot 获取插槽的节点实例
2019/11/12 Javascript
js 闭包深入理解与实例分析
2020/03/19 Javascript
如何在JS文件中获取Vue组件
2020/09/16 Javascript
[02:32]DOTA2英雄基础教程 美杜莎
2014/01/07 DOTA
Python编程之属性和方法实例详解
2015/05/19 Python
基于python 字符编码的理解
2017/09/02 Python
pandas 如何分割字符的实现方法
2019/07/29 Python
详解Django配置优化方法
2019/11/18 Python
Django 实现 Websocket 广播、点对点发送消息的代码
2020/06/03 Python
Python从MySQL数据库中面抽取试题,生成试卷
2021/01/14 Python
html5教程实现Photoshop渐变色效果
2013/12/04 HTML / CSS
html5表单及新增的改良元素详解
2016/06/07 HTML / CSS
美国最大的电子宠物训练产品制造商:PetSafe
2018/10/12 全球购物
季度思想汇报
2014/01/01 职场文书
手工社团活动方案
2014/02/17 职场文书
合作经营协议书范本
2014/04/17 职场文书
信息管理专业自荐书
2014/06/05 职场文书
医院党的群众路线教育实践活动领导班子对照检查材料
2014/09/25 职场文书
群众路线自查自纠工作情况报告
2014/10/28 职场文书
小程序实现筛子抽奖
2021/05/26 Javascript
如何利用Python实现n*n螺旋矩阵
2022/01/18 Python