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字符串加密解密的三种方法分享(base64 win32com)
Jan 19 Python
python实现得到一个给定类的虚函数
Sep 28 Python
Python实现TCP/IP协议下的端口转发及重定向示例
Jun 14 Python
python脚本爬取字体文件的实现方法
Apr 29 Python
Python中循环后使用list.append()数据被覆盖问题的解决
Jul 01 Python
Python的高阶函数用法实例分析
Apr 11 Python
Python异常处理例题整理
Jul 07 Python
python 多进程队列数据处理详解
Dec 23 Python
Pytorch 实现sobel算子的卷积操作详解
Jan 10 Python
Python request操作步骤及代码实例
Apr 13 Python
Python日志处理模块logging用法解析
May 19 Python
keras实现VGG16 CIFAR10数据集方式
Jul 07 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
PHP4在Windows2000下的安装
2006/10/09 PHP
如何写php程序?
2006/12/08 PHP
php中magic_quotes_gpc对unserialize的影响分析
2014/12/16 PHP
在Laravel中使用DataTables插件的方法
2018/05/29 PHP
解决Laravel blade模板转义html标签的问题
2019/09/03 PHP
CSS+JS构建的图片查看器
2006/07/22 Javascript
JavaScript XML实现两级级联下拉列表
2008/11/10 Javascript
JavaScript实现点击按钮后变灰避免多次重复提交
2013/07/15 Javascript
浅谈javascript 函数内部属性
2015/01/21 Javascript
深入学习JavaScript中的原型prototype
2015/08/13 Javascript
将form表单通过ajax实现无刷新提交的简单实例
2016/10/12 Javascript
[js高手之路]单例模式实现模态框的示例
2017/09/01 Javascript
详解axios 全攻略之基本介绍与使用(GET 与 POST)
2017/09/15 Javascript
jq源码解析之绑在$,jQuery上面的方法(实例讲解)
2017/10/13 jQuery
elementUI 动态生成几行几列的方法示例
2019/07/11 Javascript
[48:39]Ti4主赛事胜者组第一天 EG vs NEWBEE 2
2014/07/19 DOTA
python根据开头和结尾字符串获取中间字符串的方法
2015/03/26 Python
Python 正则表达式入门(中级篇)
2016/12/07 Python
Python生成密码库功能示例
2017/05/23 Python
python使用mitmproxy抓取浏览器请求的方法
2019/07/02 Python
Python3分析处理声音数据的例子
2019/08/27 Python
python-OpenCV 实现将数组转换成灰度图和彩图
2020/01/09 Python
CSS3实现王者匹配时的粒子动画效果
2019/04/12 HTML / CSS
美国瑜伽品牌:Gaiam
2017/10/31 全球购物
大学生职业生涯规划书模板
2014/01/03 职场文书
优秀学生干部推荐材料
2014/02/03 职场文书
学生党支部先进事迹
2014/02/04 职场文书
研究生毕业自我鉴定范文
2014/03/27 职场文书
安全保证书范文
2014/04/29 职场文书
名人演讲稿范文
2014/09/16 职场文书
司法局群众路线教育实践活动整改措施
2014/09/17 职场文书
先进事迹材料范文
2014/12/29 职场文书
总账会计岗位职责
2015/04/02 职场文书
2015暑期爱心支教策划书
2015/07/14 职场文书
2019新员工心得体会
2019/06/25 职场文书
收音机爱好者玩机13年,简评其使用过的19台收音机
2022/04/30 无线电