python爬虫之scrapy文件下载

Posted Charles.L

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python爬虫之scrapy文件下载相关的知识,希望对你有一定的参考价值。

 我们在写普通脚本的时候,从一个网站拿到一个文件的下载url,然后下载,直接将数据写入文件或者保存下来,但是这个需要我们自己一点一点的写出来,而且反复利用率并不高,为了不重复造轮子,scrapy提供很流畅的下载文件方式,只需要随便写写便可用了。

 mat.py文件

 1 # -*- coding: utf-8 -*-
 2 import scrapy
 3 from scrapy.linkextractor import LinkExtractor
 4 from weidashang.items import matplotlib
 5 
 6 class MatSpider(scrapy.Spider):
 7     name = "mat"
 8     allowed_domains = ["matplotlib.org"]
 9     start_urls = [https://matplotlib.org/examples]
10 
11     def parse(self, response):
       #抓取每个脚本文件的访问页面,拿到后下载
12 link = LinkExtractor(restrict_css=div.toctree-wrapper.compound li.toctree-l2) 13 for link in link.extract_links(response): 14 yield scrapy.Request(url=link.url,callback=self.example) 15 16 def example(self,response):
      #进入每个脚本的页面,抓取源码文件按钮,并和base_url结合起来形成一个完整的url
17 href = response.css(a.reference.external::attr(href)).extract_first() 18 url = response.urljoin(href) 19 example = matplotlib() 20 example[file_urls] = [url] 21 return example

pipelines.py

1 class MyFilePlipeline(FilesPipeline):
2     def file_path(self, request, response=None, info=None):
3         path = urlparse(request.url).path
4         return join(basename(dirname(path)),basename(path))

settings.py

1 ITEM_PIPELINES = {
2    weidashang.pipelines.MyFilePlipeline: 1,
3 }
4 FILES_STORE = examples_src

items.py

class matplotlib(Item):
    file_urls = Field()
    files = Field()

 run.py

1 from scrapy.cmdline import execute
2 execute([scrapy, crawl, mat,-o,example.json])

 



以上是关于python爬虫之scrapy文件下载的主要内容,如果未能解决你的问题,请参考以下文章

Python爬虫之Scrapy框架结构

Python之Scrapy安装

python爬虫scrapy之scrapy终端(Scrapy shell)

Python爬虫之Scrapy框架系列——创建并运行你的第一个Scrapy demo项目

Python爬虫之Scrapy框架系列——创建并运行你的第一个Scrapy demo项目

Python爬虫之Scrapy框架系列(17)——实战某代码托管平台登录FormRequest类