2025年4月9日 星期三 乙巳(蛇)年 正月初十 设为首页 加入收藏
rss
您当前的位置:首页 > 计算机 > 编程开发 > Python

python爬虫之scrapy文件下载

时间:05-21来源:作者:点击数:31

我们在写普通脚本的时候,从一个网站拿到一个文件的下载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'])
方便获取更多学习、工作、生活信息请关注本站微信公众号城东书院 微信服务号城东书院 微信订阅号
推荐内容
相关内容
栏目更新
栏目热门