首页| 新闻| 娱乐| 游戏| 科普| 文学| 编程| 系统| 数据库| 建站| 学院| 产品| 网管| 维修| 办公| 热点
本文实例讲述了Python爬虫框架scrapy实现的文件下载功能。分享给大家供大家参考,具体如下:
我们在写普通脚本的时候,从一个网站拿到一个文件的下载url,然后下载,直接将数据写入文件或者保存下来,但是这个需要我们自己一点一点的写出来,而且反复利用率并不高,为了不重复造轮子,scrapy提供很流畅的下载文件方式,只需要随便写写便可用了。
mat.py文件
# -*- coding: utf-8 -*-import scrapyfrom scrapy.linkextractor import LinkExtractorfrom weidashang.items import matplotlibclass 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 executeexecute(['scrapy', 'crawl', 'mat','-o','example.json'])
希望本文所述对大家Python程序设计有所帮助。
手机内存不足怎么清理 手机提
怎样设置虚拟内存?
解决内存不足妙方
芭蕾舞蹈表演,真实美到极致
下午茶时间,悠然自得的休憩
漫天大雪天空飞舞展现最美雪景
充斥这繁华奢靡气息的城市迪拜风景图片
肉食主义者的最爱美食烤肉图片
夏日甜心草莓美食图片
人逢知己千杯少,喝酒搞笑图集
搞笑试卷,学生恶搞答题
新闻热点
疑难解答
图片精选
Python入门基础教程 超详细1小时学
python连接MySQL数据库实例分析
wxPython定时器wx.Timer简单应用实
浅谈python中截取字符函数strip,lst
网友关注