最近在用蓝奏云,这款云盘无限速并且操作分享简单,自认为挺好的一个云盘,所以研究了如何通过蓝奏云分享链接获取文件最终地址。你可能问爬取直链有什么用,我说一下我的需求,我的服务器学生机带宽是1m,很小。我运营着自己的app,我想要为用户提供升级更新,如果把最新安装包放在我服务器上,1m就是128k/s,下载一个10m的安装包都要好长时间,但是如果我们将安装包放在云盘上,每次用户请求更新,我们只需要即时获取安装包在蓝奏云的真实地址返回给用户,这样用户直接从获取蓝奏云获取apk文件,下载速度比直接从自身1m带宽服务器快多了。所以,蓝奏云可以作为我们存放共享资源文件的地方。
- 直接以我云盘上存放的一首歌为例子,讲解如何爬取蓝奏云直链。这个音乐分享地址为https://www.lanzous.com/i3xcmaf
- 先贴完整代码
#coding=utf-8
from bs4 import BeautifulSoup
import requests
import re
import json
#蓝奏云分享文件链接地址
url = 'https://www.lanzous.com/i3xcmaf'
#header头,注意那个referer必须要与上面文件分享地址url相同
headers = {
'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.121 Safari/537.3',
'referer': url
}
# 获取分享页面html文件
res = requests.get(url,headers=headers)
# 引入BeautifulSoup库对html进行处理,获取iframe中的出现的js文件
soup = BeautifulSoup(res.text,'html.parser')
url2 = 'https://www.lanzous.com/'+soup.find('iframe')['src']
res2 = requests.get(url2,headers=headers)
# 正则提取请求三个参数
a = re.findall(r'var a = \'([\w]+?)\';',res2.text)
params = re.findall(r'var [\w]{6} = \'([\w]+?)\';',res2.text)
# 请求下载地址
url3 = 'https://www.lanzous.com/ajaxm.php'
data = {
&