scrapy--matplotlib
昨天晚上看了一些关于保存文件的相关资料,早早的睡了,白天根据网上查找的资料,自己再捡起来.弄了一上午就爬取出来了,开心!!!好吧,让我们开始
老规矩,先上图。大家也赶快行动起来
分类文件:
文件内coding.py
1.matlib.py
# -*- coding: utf-8 -*-
import scrapy
from scrapy.linkextractors import LinkExtractor
from Matlib.items import MatlibItem
import pdb class MatlibSpider(scrapy.Spider):
name = 'matlib'
allowed_domains = ['matplotlib.org']
start_urls = ['https://matplotlib.org/examples/index.html'] def parse(self, response):
#le = LinkExtractor(restrict_css='div.toctree-wrapper.compound li.toctree-l2')
le = LinkExtractor(restrict_css='div.toctree-wrapper.compound li.toctree-l1', deny='/index.html$')
for link in le.extract_links(response):
yield scrapy.Request(link.url,callback=self.parse_url) def parse_url(self,response):
sel = response.css('a.reference.external::attr(href)').extract()[0]
url = response.urljoin(sel)
mpl = MatlibItem()
#mpl['files_url'] = [url]
#pdb.set_trace()
mpl['files_url'] = url.encode('utf-8')
#return mpl
yield mpl
2.items.py
import scrapy class MatlibItem(scrapy.Item): files_url = scrapy.Field()
files = scrapy.Field()
3.pipelines.py# -*- coding: utf-8 -*-
# Define your item pipelines here
#
# Don't forget to add your pipeline to the ITEM_PIPELINES setting
# See: https://doc.scrapy.org/en/latest/topics/item-pipeline.html import scrapy
from scrapy.pipelines.files import FilesPipeline
import urlparse
from os.path import basename,dirname,join
import pdb class MyFilePipeline(FilesPipeline): def get_media_requests(self,item,info): #调用这个方法,爬虫才能保存文件!!
#for file in item['files_url']:
#yield scrapy.Request(file.encode('utf-8'))
yield scrapy.Request(item['files_url'])
'''
def file_path(self, request, response=None, info=None): #重写文件名,和路径
split_url = str(request.url).split('/')
kind_name = split_url[-2]
file_name = split_url[-1]
return '%s/%s' % (kind_name, file_name)
'''
def file_path(self,request,response=None,info=None):
path=urlparse.urlparse(request.url).path
return join(basename(dirname(path)),basename(path))
4.settings.py(其他和我之前发表的一样,大家可以去查找下)
ITEM_PIPELINES = {
#'Matlib.pipelines.MatlibPipeline': 200,
'Matlib.pipelines.MyFilePipeline': 2,
#'scrapy.pipelines.files.FilesPipeline': 1,
}
遇到的问题:
1.matlib.py
1.url = response.urljoin(sel) :url需要解码才能在pipelines.py/scrapy.Request(item[''files_url]) 中运行下载
2.pipelines.py:
1.未重写文件名,会自动保存为checksum名,
'checksum': '715610c4375a1d749bc26b39cf7e7199',
'path': 'animation/bayes_update.py',
'url': 'https://matplotlib.org/examples/animation/bayes_update.py'}],
2.def get_media_requests(self,item,info): 调用这个函数,文件才能下载!!!看其他人重写路径的时候,没有调用这个函数,误导了我很久
如果有小伙伴,遇到了其他问题,欢迎留言,大家一起进步
scrapy--matplotlib的更多相关文章
- scrapy实例matplotlib脚本下载
利用scrapy框架实现matplotlib实例脚本批量下载至本地并进行文件夹分类:话不多说上代码: 首先是爬虫代码: import scrapy from scrapy.linkextractors ...
- win7下matplotlib安装(64位)
前段时间爬了一些数据,想着以后要将数据的分析结果什么的展示出来,就想着下个MATLAB,某天在微信上的一篇文章发现matplotlib库,是用于Python的一个不错的图形化库,就想着装上耍耍.不过安 ...
- Python爬虫入门教程 37-100 云沃客项目外包网数据爬虫 scrapy
爬前叨叨 2019年开始了,今年计划写一整年的博客呢~,第一篇博客写一下 一个外包网站的爬虫,万一你从这个外包网站弄点外快呢,呵呵哒 数据分析 官方网址为 https://www.clouderwor ...
- Python爬虫入门教程 38-100 教育部高校名单数据爬虫 scrapy
爬前叨叨 今天要爬取一下正规大学名单,这些名单是教育部公布具有招生资格的高校名单,除了这些学校以外,其他招生的单位,其所招学生的学籍.发放的毕业证书国家均不予承认,也就是俗称的野鸡大学! 网址是 ht ...
- Scrapy爬取猫眼《复仇者联盟4终局之战》影评
一.分析 首先简单介绍一下Scrapy的基本流程: 引擎从调度器中取出一个链接(URL)用于接下来的抓取 引擎把URL封装成一个请求(Request)传给下载器 下载器把资源下载下来,并封装成应答包( ...
- python爬虫之scrapy文件下载
我们在写普通脚本的时候,从一个网站拿到一个文件的下载url,然后下载,直接将数据写入文件或者保存下来,但是这个需要我们自己一点一点的写出来,而且反复利用率并不高,为了不重复造轮子,scrapy提供很流 ...
- scrapy爬取知乎问答
登陆 参考 https://github.com/zkqiang/Zhihu-Login # -*- coding: utf-8 -*- import scrapy import time impor ...
- scrapy 登陆知乎
参考 https://github.com/zkqiang/Zhihu-Login # -*- coding: utf-8 -*- import scrapy import time import r ...
- PyCharm+Scrapy爬取安居客楼盘信息
一.说明 1.1 开发环境说明 开发环境--PyCharm 爬虫框架--Scrapy 开发语言--Python 3.6 安装第三方库--Scrapy.pymysql.matplotlib 数据库--M ...
- 使用scrapy爬取dota2贴吧数据并进行分析
一直好奇贴吧里的小伙伴们在过去的时间里说的最多的词是什么,那我们就来抓取分析一下贴吧发文的标题内容,并提取分析一下,看看吧友们在说些什么. 首先我们使用scrapy对所有贴吧文章的标题进行抓取 scr ...
随机推荐
- c# 远程连接sql server 2008问题
http://hi.baidu.com/lzghxjt/item/d42bd8f7066a3ad86325d280 远程连接不上可以在防火墙新建入站规则
- maven课程 项目管理利器-maven 3-1 maven常用的构建命令
mvn -v 查看mvn版本 mvn compile 编译 mvn test 测试 mvn package 编译,打包(这个命令会在你的项目路径下一个target目录,并且拥有compile命令的功 ...
- Python元组类型、字典类型及常用操作
一.元组类型 1.用途 记录多个值,当多个值没有改的需求,此时用元组更合适,Python的元组与列表类似,不同之处在于元组的元素不能修改. 2.定义方式 在()内用逗号分隔开多个任意类型的值 t=(1 ...
- sass命令
tip:sass报错解决 通过ruby编译scss时,发现编译报错,内容如下: Conversion error: Jekyll::Converters::Scss encountered an ...
- JS在与lua的交互心得
最近在写一个项目,前端技术使用的是Vue,在与lua的交互过程,是通过一个公共JS,前端调用公共js的方法给lua发送命令,lua接到命令,去执行一些方法,然后又通过回调返回到了前端,由于是第一次写这 ...
- 转:用AutoCAD 系统变量编程
Autocad的系统变量, 我们可以通过如下得到: Autodesk.AutoCAD.ApplicationServices.Application.GetSystemVariable(/*MSG0* ...
- [原创]Debian9 从零编译配置Redis4.0
序言 Redis 一.准备工作 1.1 更新系统安装包列表 没啥,就他喵想用个最新的. # apt update 1.2 创建需要使用的目录 创建目录source和web,分别用来放源码和编译后的文件 ...
- python模块详解 sys shutil
sys模块 sys.argv 命令行参数List,第一个元素是程序本身路径 sys.exit(n) 退出程序,正常退出时exit(0) sys.version 获取Python解释程序的版本信息 sy ...
- mysql一些常用的查询语句总结
工作中会遇到一些比较有用的mysql查询语句,有了它,可以对mysql进行更全面的维护和管理,下面就写一下我记录的 1.按照字段ru_id查询dsc_order_goods表中ru_id出现次数由多到 ...
- char 与 signed char 和 unsigned char三者之间的关系
# char 与 signed char 和 unsigned char三者之间的关系 三者都占用 1个字节,即 8 bit signed char取值范围(-128, 127) unsigned c ...