Python爬虫框架scrapy实现的文件下载功能示例

作者:Charles.L 时间:2023-09-23 09:41:56 

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

来源:https://www.cnblogs.com/lei0213/p/8098180.html

标签:Python,爬虫框架,scrapy,文件下载
0
投稿

猜你喜欢

  • Python网络编程之使用email、smtplib、poplib、imaplib模块收发邮件

    2023-06-30 08:45:42
  • SQL Server元数据的管理与应用

    2009-03-16 14:24:00
  • TensorFlow卷积神经网络之使用训练好的模型识别猫狗图片

    2023-09-07 03:34:41
  • Python如何处理异常报错方法(建议收藏!)

    2022-08-09 03:19:13
  • pytorch常用函数之torch.randn()解读

    2023-03-24 09:08:29
  • asp如何实现强制登录注册?

    2010-05-24 18:13:00
  •  Go 语言实现 HTTP 文件上传和下载

    2023-06-23 01:42:24
  • Jquery 改变radio/checkbox选中状态,获取选中的值(示例代码)

    2024-04-22 22:33:33
  • Linux下安装mysql的教程详解

    2024-01-20 03:24:37
  • 全民学编程之 Hello World

    2023-03-13 20:48:37
  • Python爬虫Scrapy框架IP代理的配置与调试

    2022-09-19 08:20:26
  • Python实现对二维码数据进行压缩

    2022-10-22 12:51:59
  • Python如何使用pymongo连接MongoDB数据库并进行相关操作

    2023-05-12 01:21:49
  • python生成n个元素的全组合方法

    2023-11-10 20:35:08
  • python实现凯撒密码

    2022-10-13 07:31:44
  • 利用python实现蝴蝶曲线

    2022-09-30 18:51:51
  • python处理文本文件实现生成指定格式文件的方法

    2022-01-07 21:41:43
  • git 一个可以提高开发效率的命令:cherry-pick详解

    2022-03-03 01:40:22
  • pandas创建DataFrame对象失败的解决方法

    2022-06-23 17:12:54
  • JS操作input标签属性checkbox全选的实现代码

    2024-04-28 09:50:56
  • asp之家 网络编程 m.aspxhome.com