我们在浏览网页的时候一般都会看到很多好用的网盘,最近很多网盘都是一些开发者比较喜欢使用的,原因大多都是他们不像某盘一样限速,要求充会员而且还要广告。这些大容量的网盘大多也是开源的,所以我们也不能存储一些太过于贵重的一些物品。我之前写过一篇关于蓝奏云盘的文章,是可以获取直链和不限速下载链接的。所以今天我们就来讲一讲另一个比较好的网盘——小麦云盘


蓝奏云文章传送地址:无限存储空间的蓝奏网盘你还不用?使用Python,直接获取直链!Python使用Requests和BS4实现蓝奏云直链解析与下载

那么接下来我们马上就来尝试一下(大家可以注册一个账号自己体验一下)

在这里我们会使用某一位仁兄的分享链接作为我们这次实验的对象

文章目录

  • 程序设计
    • 创建一个类
    • 分析网站
      • 示例代码
    • 下载链接获取
      • 示例代码
      • 访问并保存文件
  • 完整代码
  • 提示
  • 转载声明

程序设计

创建一个类

我们在使用的时候,为了让我们每一步都非常适合我们后续的操作。我们在编写代码时使用类与对象的方法进行管理。那么首先我们先创建一个名为OwnCloud的类

这个程序当你运行时不会有任何的变化,所以我们要在这个类里面加上一些方法

分析网站

我们通过分析可以看出,我们网站的源代码非常少,我们可以通过直接访问网页获取其源代码,修改代码成为这样,我们可以看见运行结果成为了这样


我们不能看到网站上到底有什么内容,所以我们要在代码中加上编码的内容,如果不知道的小伙伴们可以看我的这一篇文章:Requests使用时踩过的坑(一):当使用Text获取网页源代码时乱码了怎么办(requests常见的几种解码方式和常见的编码方式)所以我们将代码加上这一行res.encoding = "utf-8"就会发现我们的返回值可以正常访问了

但是显然,我们的源代码太少了,很多关键的地方像分享人都没有出现在我们的页面上,说明它和访问链接不是同一个

继续观察我们可以发现这一个链接,这是一个GET链接,我们可以点开返回值查看一样它的内容。当然我们也可以从链接的字面意思上了解到我们这个链接的意思,就是获取信息的一个链接。这对我们的爬取非常重要

可是我们将如何获取我们的ID值呢,我们的ID值从第一时刻就传进了程序,但是我们并不能使用我们的返回值,这个时候我们就要使用到我们的一个字符串的操作技术,字符串的分割,我们将使用split()分割出我们的ID

我们将这一行链接写入我们的基本程序

于是我们的程序变成了这样,我们可以看到我们已经可以输出我们的相关信息了

运行结果如下图所示,所以我们便可以获取到我们分享者和我们文件的相关信息了,在这些信息当中,最重要的就是文件的名字和文件的大小。因为我们PYTHON的下载速度是不能显示的,所以我们只能通过文件大小估计我们的下载时间。

我们加上解析代码,我们的程序已经快完成一半了

示例代码

import requests
import jsonclass OwnCloud():# 创建一个基本函def __init__(self,url):self.url = url# 设置默认获取信息链接self.info_link = "https://mo.own-cloud.cn/api/v3/share/info/"self.headers = {"User-Agent" : "Mozilla/5.0 (Linux; U; Android 2.3.7; zh-cn; GT-I9000 Build/MIUI) UC AppleWebKit/534.31 (KHTML, like Gecko) Mobile Safari/534.31",}# 运行我们的访问函数self.get_id()def get_id(self):# 进行字符串分割id_group = self.url.split("/")# 获取我们的列表中最后一个元素self.ownfile_id = id_group[-1]# 运行获取网页链接的程序self.get_file_name()def get_file_name(self):# 创建一个保持性会话self.session = requests.session()# 获取我们文件信息链接info_ownfile_link = self.info_link + self.ownfile_id# 访问我们的网站res = self.session.get(info_ownfile_link,headers = self.headers)# 测试我们的访问情况# print(res)# 转换我们的编码方式res.encoding = "utf-8"# 将其转换成为我们的STR文件res = res.text# 将文件转换成为JSON文件,以便于操作info_link = json.loads(res)# print(info_link)info_link_data = info_link.get("data")locked = info_link_data.get("locked")is_dir = info_link_data.get("is_dir")create_data = info_link_data.get("create_data")downloads = info_link_data.get("downloads")views = info_link_data.get("views")creator = info_link_data.get("creator")creator_key = creator.get("key")creator_nick = creator.get("nick")source = info_link_data.get("source")self.name = source.get("name")self.size = source.get("size")msg = info_link_data.get("msg")# 继续运行self.visit_file()OwnCloud("https://mo.own-cloud.cn/s/5RYeIg")

下载链接获取

继续下载我们可以发现,我们点击下载的时候,我们的网站会发出一个获取下载链接的代码,通过这个下载链接,我们就一定可以获取到我们的文件了。

我们使用和获取文件信息一样的方法下载资料,但是要注意的是这里的请求,我们一定要看清请求再写代码,这样才能保证我们的准确性

首先先设置我们的默认链接,然后我们再进行相关的活动

编写我们的代码,我们还是一样的编码方式,并且加上我们自己文件的ID值

转换之后获取我们的地址,我们可以看到这是一个Json文件,我们可以获取JSON文件的地址,我们可以进一步进行访问操作

示例代码

import requests
import json
from bs4 import BeautifulSoup# 首先我们创建一个获取小麦云盘链接的类
class OwnCloud():# 创建一个基本函def __init__(self,url):self.url = urlself.headers = {"User-Agent" : "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.85 Safari/537.36",}# 设置默认获取信息链接self.info_link = "https://mo.own-cloud.cn/api/v3/share/info/"# 设置默认的获取下载链接网址self.download_link = "https://mo.own-cloud.cn/api/v3/share/download/"# 开始运行访问程序self.get_id()def get_id(self):# 进行字符串分割id_group = self.url.split("/")# 获取我们的列表中最后一个元素self.ownfile_id = id_group[-1]# 运行获取网页链接的程序self.get_file_name()def get_file_name(self):# 创建一个保持性会话self.session = requests.session()# 获取我们文件信息链接info_ownfile_link = self.info_link + self.ownfile_id# 访问我们的网站res = self.session.get(info_ownfile_link,headers = self.headers)# 测试我们的访问情况# print(res)# 转换我们的编码方式res.encoding = "utf-8"# 将其转换成为我们的STR文件res = res.text# 将文件转换成为JSON文件,以便于操作info_link = json.loads(res)info_link_data = info_link.get("data")locked = info_link_data.get("locked")is_dir = info_link_data.get("is_dir")create_data = info_link_data.get("create_data")downloads = info_link_data.get("downloads")views = info_link_data.get("views")creator = info_link_data.get("creator")creator_key = creator.get("key")creator_nick = creator.get("nick")source = info_link_data.get("source")self.name = source.get("name")self.size = source.get("size")msg = info_link_data.get("msg")# 继续运行self.visit_file()def visit_file(self):# 获取我们文件的单独访问链接download_ownfile_link = self.download_link + self.ownfile_id# print(download_ownfile_link)# PUT访问主函数传给我们的参数并赋值res = self.session.put(download_ownfile_link)# 测试我们的访问情况# print(res)# 转换我们的编码方式res.encoding = "utf-8"# 将其转换成为我们的STR文件res = res.text# 测试文件类型# print(type(res))# 将文件转换成为JSON文件,以便于操作download_link = json.loads(res)# 获取文件的存储地址self.file_path = download_link.get("data")print(self.file_path)

访问并保存文件

我们使用同一个会话将我们的软件保存,这个时候我们的请求链接是使用GET,我们获取完访问内容后将继续保存文件,也就是调用我们接下来的函数

最后,我们保存我们写好的文件,这样大功告成

完整代码


其实整一个代码也不是特别难,只要根据网站开发者的思路走就好了

import requests
import json
from bs4 import BeautifulSoup# 首先我们创建一个获取小麦云盘链接的类
class OwnCloud():# 创建一个基本函def __init__(self,url):self.url = urlself.headers = {"User-Agent" : "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.85 Safari/537.36",}# 设置默认获取信息链接self.info_link = "https://mo.own-cloud.cn/api/v3/share/info/"# 设置默认的获取下载链接网址self.download_link = "https://mo.own-cloud.cn/api/v3/share/download/"# 开始运行访问程序self.get_id()def get_id(self):# 进行字符串分割id_group = self.url.split("/")# 获取我们的列表中最后一个元素self.ownfile_id = id_group[-1]# 运行获取网页链接的程序self.get_file_name()def get_file_name(self):# 创建一个保持性会话self.session = requests.session()# 获取我们文件信息链接info_ownfile_link = self.info_link + self.ownfile_id# 访问我们的网站res = self.session.get(info_ownfile_link,headers = self.headers)# 测试我们的访问情况# print(res)# 转换我们的编码方式res.encoding = "utf-8"# 将其转换成为我们的STR文件res = res.text# 将文件转换成为JSON文件,以便于操作info_link = json.loads(res)info_link_data = info_link.get("data")locked = info_link_data.get("locked")is_dir = info_link_data.get("is_dir")create_data = info_link_data.get("create_data")downloads = info_link_data.get("downloads")views = info_link_data.get("views")creator = info_link_data.get("creator")creator_key = creator.get("key")creator_nick = creator.get("nick")source = info_link_data.get("source")self.name = source.get("name")self.size = source.get("size")msg = info_link_data.get("msg")# 继续运行self.visit_file()def visit_file(self):# 获取我们文件的单独访问链接download_ownfile_link = self.download_link + self.ownfile_id# print(download_ownfile_link)# PUT访问主函数传给我们的参数并赋值res = self.session.put(download_ownfile_link)# 测试我们的访问情况# print(res)# 转换我们的编码方式res.encoding = "utf-8"# 将其转换成为我们的STR文件res = res.text# 测试文件类型# print(type(res))# 将文件转换成为JSON文件,以便于操作download_link = json.loads(res)# 获取文件的存储地址self.file_path = download_link.get("data")print(self.file_path)self.save_file()def save_file(self):# 我们使用同一个会话继续保存文件file = self.session.get(self.file_path)# 将其响应内容获取self.file = file.contentself.save_as_local()def save_as_local(self):# 创建一个文件with open("./"+self.name,"wb+")as f:# 写入文件并关闭文件f.write(self.file)f.close()OwnCloud("https://mo.own-cloud.cn/s/5RYeIg")

提示

那么大家要注意的是,我们要使用Headers对网站进行访问的原因,是因为我们想让网站认为我们并不是一个机器人爬虫,而是一个正常访问的正常人,所以我们将在我们的程序中设置Headers。但是当我们的程序访问很多次时,比如说是一个高并发的程序,我们可能要加入我们自己的Cookies或者不停地更改我们Headers来让我们的程序变得不同。当然,使用代理也是一种很好的方法,大家也可以试着去维护一个代理池。

转载声明

博客在2021年5月1日首发自CSDN,如需转载,请附上原文链接:Python利用Requests获取2TB大容量不限速小麦魔方网盘/小麦云盘(Own-Cloud.Cn)的文件直链并下载文件

Python利用Requests获取2TB大容量不限速小麦魔方网盘/小麦云盘(Own-Cloud.Cn)的文件直链并下载文件相关推荐

  1. Python利用requests抓取页面源代码(基础)

    Python利用requests抓取页面源代码(基础) Requests模块是一个用于网络访问的模块. 由于使用到的requests库为第三方库,需要事先对其进行安装 1.1安装requests (1 ...

  2. Python笔记-requests获取web数据及下载文件

    使用Python去搞web获取数据相关的东西的确方便.302重定向也能自动解决. 如下FIddler抓包: 这个还是挺好的,可以直接处理302,挂证书也方便: 获取数据源码如下: def getCon ...

  3. python:利用requests库下载图片

    今天非常兴奋,身为python小白的我经过数天的看视频和看书,终于看懂了一点,程序刚刚运行成功. 话不多说,马上分享! 这次用到的是requests库 先来介绍下requests库 Requests是 ...

  4. python如何实现下载文件_python实现下载文件的三种方法

    python实现下载文件的三种方法 Python开发中时长遇到要下载文件的情况,最常用的方法就是通过Http利用urllib或者urllib2模块. 当然你也可以利用ftplib从ftp站点下载文件. ...

  5. php文件断点续传,php文件下载限速,文件断点续传,多线程下载文件原理解析

    文件下载限速 首先,我们写一段使用php输出文件给浏览器下载的代码<?php /** * Created by PhpStorm. * User: tioncico * Date: 19-2-4 ...

  6. python多线程下载多个文件_python多线程下载文件 练习1

    ***今天在我BF的帮助下完成了小小的程序,也是我第一次写博客呢,谢谢他哦嘎嘎 1.首先,计算出下载文件的长度. conn = urllib.urlopen(url) headers = conn.i ...

  7. python selenium 下载文件_python+selenium下载文件——firefox

    from selenium import webdriver import time fp = webdriver.FirefoxProfile() fp.set_preference('browse ...

  8. Python利用requests和xpath爬取网页内容过程

    文章目录 遇到的问题及解决方法 1.xpath()函数的使用-之后会练习使用find_all()函数 1.1 XPath 常用规则 1.2 获取文本 1.3 要提取的信息有大量空格 1.4 多属性匹配 ...

  9. python 利用requests库抓取网站图片

    截图放在下方: 我们来看下我们要的图片都在哪 框起来这些图就是我要的,数量多的不得了,看来这个网站积累了很久了,现在我们要用5分钟时间来拿到所有图片 接下来让我们看下源代码来解析一下这些图片的地址吧. ...

最新文章

  1. servlet增删改查实例_SpringBoot系列(2)整合MongoDB实现增删改查(完整案例)
  2. 如何形象地描述 RxJava 中的背压和流控机制?
  3. funny alphabet
  4. 验证码实现php 难点,php实现简单的验证码功能
  5. oracle字符串清洗、拆分案例
  6. html分步调试,一般纯HTML网页的JavaScript的单步执行与调试(以VS2005)
  7. Max Sum Plus Plus HDU - 1024
  8. rust服务器假人文件,英语谚语总结计划大全.docx
  9. java 判断二级网址_【Java】利用正則表達式推断是否为网址
  10. 无穷级数判敛方法使用限制
  11. 计算机领域各个技术——汇总篇
  12. 单片机发射红外c语言程序,基于单片机的红外发射C语言程序
  13. [转载]耗散结构理论与生住坏灭--开放.平衡.涨落.突变.
  14. 如何快速增加qq名片赞
  15. 使用Jupyter Notebook远程连接服务器
  16. 长时间看电脑的朋友,怎么保护您的眼睛
  17. C语言 exit 函数 - C语言零基础入门教程
  18. 微信小程序animation
  19. 附录 区块链技术名词与核心原理
  20. 国内首个《政务APP技术指标评价规范》团体标准正式出台

热门文章

  1. SpringBoot项目部署在外置Tomcat正常启动,但项目没有被加载的问题
  2. 威斯敏斯德信条-导读
  3. 大一规划(立志、坚定、自律)
  4. 软件测试学习第二周--MySQL
  5. mybatis的动态代理
  6. 【计算机毕业设计】java+mysql基于ssm的美容美发店管理系统
  7. excel文件的限制编辑在哪里解除
  8. 图书管理销售系统概要分析,接口设计部分
  9. VS2010旗舰版下载----带SN系列号
  10. 金蝶获取登录密码方式