python爬虫框架scrapy实例详解_Python爬虫框架scrapy实现的文件下载功能示例

本文实例讲述了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程序设计有所帮助。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值