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

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

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

那么接下来我们马上就来尝试一下(大家可以注册一个账号自己体验一下)
在这里插入图片描述
在这里我们会使用某一位仁兄的分享链接作为我们这次实验的对象

程序设计

创建一个类

我们在使用的时候,为了让我们每一步都非常适合我们后续的操作。我们在编写代码时使用类与对象的方法进行管理。那么首先我们先创建一个名为OwnCloud的类
在这里插入图片描述
这个程序当你运行时不会有任何的变化,所以我们要在这个类里面加上一些方法

分析网站

我们通过分析可以看出,我们网站的源代码非常少,我们可以通过直接访问网页获取其源代码,修改代码成为这样,我们可以看见运行结果成为了这样
在这里插入图片描述
在这里插入图片描述
我们不能看到网站上到底有什么内容,所以我们要在代码中加上编码的内容,如果不知道的小伙伴们可以看我的这一篇文章:Requests使用时踩过的坑(一):当使用Text获取网页源代码时乱码了怎么办(requests常见的几种解码方式和常见的编码方式)所以我们将代码加上这一行res.encoding = "utf-8"就会发现我们的返回值可以正常访问了
在这里插入图片描述

但是显然,我们的源代码太少了,很多关键的地方像分享人都没有出现在我们的页面上,说明它和访问链接不是同一个
在这里插入图片描述
继续观察我们可以发现这一个链接,这是一个GET链接,我们可以点开返回值查看一样它的内容。当然我们也可以从链接的字面意思上了解到我们这个链接的意思,就是获取信息的一个链接。这对我们的爬取非常重要
在这里插入图片描述

可是我们将如何获取我们的ID值呢,我们的ID值从第一时刻就传进了程序,但是我们并不能使用我们的返回值,这个时候我们就要使用到我们的一个字符串的操作技术,字符串的分割,我们将使用split()分割出我们的ID
在这里插入图片描述
我们将这一行链接写入我们的基本程序
在这里插入图片描述
于是我们的程序变成了这样,我们可以看到我们已经可以输出我们的相关信息了
在这里插入图片描述
运行结果如下图所示,所以我们便可以获取到我们分享者和我们文件的相关信息了,在这些信息当中,最重要的就是文件的名字和文件的大小。因为我们PYTHON的下载速度是不能显示的,所以我们只能通过文件大小估计我们的下载时间。
在这里插入图片描述
我们加上解析代码,我们的程序已经快完成一半了
在这里插入图片描述

示例代码

import requests
import json

class 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 = url
		self.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 = url
		self.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.content

		self.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)的文件直链并下载文件

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
你可以使用 Python 的 `requests` 库来下载图片,并使用文件操作来读取和写入文件。以下是一段代码,根据你的描述实现了这个功能: ```python import requests # 文件路径 file_path = "test.txt" # 图片保存目录 save_directory = "D:/picture/" # 打开文件并逐行读取图片链接 with open(file_path, 'r') as file: for line in file: # 去除行尾的换行符 image_url = line.strip() # 发送请求并下载图片 response = requests.get(image_url) if response.status_code == 200: # 从URL中提取文件名 filename = image_url.split("/")[-1] # 拼接保存路径 save_path = save_directory + filename # 写入文件 with open(save_path, 'wb') as image_file: image_file.write(response.content) print(f"图片 {filename} 下载成功") else: print(f"无法下载图片 {image_url}") ``` 在上述代码中,我们先定义了 `file_path` 变量来表示包含图片链接的文本文件路径,以及 `save_directory` 变量来表示图片保存的目录。 然后,我们使用 `with open(file_path, 'r') as file` 打开文件,逐行读取图片链接。对于每个链接,我们发送 GET 请求获取图片内容,并将其保存到本地。我们使用 `requests.get()` 方法发送请求,如果响应状态码为 200,则表示请求成功。我们从链接中提取文件名,并将其与保存目录拼接为完整的保存路径。然后,我们使用 `open(save_path, 'wb')` 打开二进制文件并将响应内容写入文件中。 最后,我们通过 `print()` 函数打印出下载成功或失败的消息。 请确保指定的文件路径和保存目录是正确的,并具有相应的权限。希望这段代码能满足你的需求!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

地摊主老袁

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值