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 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)的文件直链并下载文件相关推荐
- Python利用requests抓取页面源代码(基础)
Python利用requests抓取页面源代码(基础) Requests模块是一个用于网络访问的模块. 由于使用到的requests库为第三方库,需要事先对其进行安装 1.1安装requests (1 ...
- Python笔记-requests获取web数据及下载文件
使用Python去搞web获取数据相关的东西的确方便.302重定向也能自动解决. 如下FIddler抓包: 这个还是挺好的,可以直接处理302,挂证书也方便: 获取数据源码如下: def getCon ...
- python:利用requests库下载图片
今天非常兴奋,身为python小白的我经过数天的看视频和看书,终于看懂了一点,程序刚刚运行成功. 话不多说,马上分享! 这次用到的是requests库 先来介绍下requests库 Requests是 ...
- python如何实现下载文件_python实现下载文件的三种方法
python实现下载文件的三种方法 Python开发中时长遇到要下载文件的情况,最常用的方法就是通过Http利用urllib或者urllib2模块. 当然你也可以利用ftplib从ftp站点下载文件. ...
- php文件断点续传,php文件下载限速,文件断点续传,多线程下载文件原理解析
文件下载限速 首先,我们写一段使用php输出文件给浏览器下载的代码<?php /** * Created by PhpStorm. * User: tioncico * Date: 19-2-4 ...
- python多线程下载多个文件_python多线程下载文件 练习1
***今天在我BF的帮助下完成了小小的程序,也是我第一次写博客呢,谢谢他哦嘎嘎 1.首先,计算出下载文件的长度. conn = urllib.urlopen(url) headers = conn.i ...
- python selenium 下载文件_python+selenium下载文件——firefox
from selenium import webdriver import time fp = webdriver.FirefoxProfile() fp.set_preference('browse ...
- Python利用requests和xpath爬取网页内容过程
文章目录 遇到的问题及解决方法 1.xpath()函数的使用-之后会练习使用find_all()函数 1.1 XPath 常用规则 1.2 获取文本 1.3 要提取的信息有大量空格 1.4 多属性匹配 ...
- python 利用requests库抓取网站图片
截图放在下方: 我们来看下我们要的图片都在哪 框起来这些图就是我要的,数量多的不得了,看来这个网站积累了很久了,现在我们要用5分钟时间来拿到所有图片 接下来让我们看下源代码来解析一下这些图片的地址吧. ...
最新文章
- servlet增删改查实例_SpringBoot系列(2)整合MongoDB实现增删改查(完整案例)
- 如何形象地描述 RxJava 中的背压和流控机制?
- funny alphabet
- 验证码实现php 难点,php实现简单的验证码功能
- oracle字符串清洗、拆分案例
- html分步调试,一般纯HTML网页的JavaScript的单步执行与调试(以VS2005)
- Max Sum Plus Plus HDU - 1024
- rust服务器假人文件,英语谚语总结计划大全.docx
- java 判断二级网址_【Java】利用正則表達式推断是否为网址
- 无穷级数判敛方法使用限制
- 计算机领域各个技术——汇总篇
- 单片机发射红外c语言程序,基于单片机的红外发射C语言程序
- [转载]耗散结构理论与生住坏灭--开放.平衡.涨落.突变.
- 如何快速增加qq名片赞
- 使用Jupyter Notebook远程连接服务器
- 长时间看电脑的朋友,怎么保护您的眼睛
- C语言 exit 函数 - C语言零基础入门教程
- 微信小程序animation
- 附录 区块链技术名词与核心原理
- 国内首个《政务APP技术指标评价规范》团体标准正式出台