首页 编程教程正文

通过链接下载蓝奏云网盘文件(有GUI界面)

piaodoo 编程教程 2020-02-22 22:16:14 1626 0 python教程

本文来源吾爱破解论坛

用到的第三方库:pysimplegui,requests


大概是这样子

01.PNG (27.27 KB, 下载次数: 0)

下载附件  保存到相册

2020-2-18 18:42 上传


输出(其实完全可以把后缀改成.pyw无控制台输出)

02.PNG (33.51 KB, 下载次数: 0)

下载附件  保存到相册

2020-2-18 18:42 上传


有密码的要求输入密码(密码错误不支持再次输入)

03.PNG (14.7 KB, 下载次数: 0)

下载附件  保存到相册

2020-2-18 18:42 上传


下载内容

04.PNG (35.87 KB, 下载次数: 0)

下载附件  保存到相册

2020-2-18 18:42 上传

上码
[Python] 纯文本查看 复制代码
import json
import re

import PySimpleGUI as sg
import requests
sg.change_look_and_feel('reddit')

def tool_find(tx1,tx2,tx3):
    #因为每次爬虫都要写好多正则所以封装成了一个函数
    return re.findall(re.compile("{}(.*?){}".format(tx1,tx2),re.S),tx3)

class DOWNLOAD():

    def __init__(self):
        #初始化,创建会话并获得cookie
        self.res = requests.session()
        cookie = str(self.res.get("https://www.lanzous.com").cookies)
        self.cookie = tool_find("<Cookie "," for",cookie)[0]
        print("cookie: "+self.cookie)
 
    def step1(self,url):
        #获取下载页面
        headers = {
            'user-agent': 'Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.87 Safari/537.36',
            'cookie' : self.cookie
        }
        r = self.res.get(url,headers = headers)

        #查看是否有密码
        if check_st1 :=tool_find('<div class="passwddiv-input">','/>',r.text):
            #print('有密码')
            url__,name = self.download_psw(url,r)
        else:
            url__,name = self.download_nopsw(url,r)
        
        return url__,name
        #__url是真实链接(但是后期还需要重定向),name是文件名,写文件用
        

    def download_psw(self,url,r):
        b = sg.Window('请输入密码:',layout=[[sg.Text('请输入密码'),sg.Input(),sg.Button('确定')]])
        a,psw = b.Read()
        psw = psw[0]
        b.close()
        sign = tool_find('data : \'',',',r.text)[0].split('&')[1][5:]
        
        data= {
            'action': 'downprocess',
            'sign': sign,
            'p': psw
        }
        headers = {
            'user-agent': 'Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.87 Safari/537.36',
            'referer':url,
            'cookie':self.cookie
        }
        r = self.res.post('https://www.lanzous.com/ajaxm.php',data=data,headers=headers).text
        json1 = json.loads(r)

        return json1['dom']+'/file/'+json1['url'],json1['inf']
    

    def download_nopsw(self,url,r):

        html = tool_find("<iframe","</iframe",r.text)[1]
        url_ = tool_find('src="','"',html)[0]
        name = tool_find('<div style="font-size','/div',r.text)
        name = tool_find('>','<',name[0])[0]
        print(name)
        headers = {
            'user-agent': 'Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.87 Safari/537.36',
            'referer':url,
            'cookie':self.cookie
        }
        r = self.res.get('https://www.lanzous.com/'+url_,headers=headers)
        html = tool_find("var sg = '",'\';',r.text)[0]
        #print(html)

        data = {
            'action': 'downprocess',
            'sign': html,
            'ves': '1'
        }
        headers = {
            'user-agent': 'Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.87 Safari/537.36',
            'cookie':self.cookie,
            'referer':url_
        }
        r = self.res.post('https://www.lanzous.com/ajaxm.php',data=data,headers=headers).json()

        url = r['dom']+'/file/'+r['url']
        
        return url,name

    def download(self,url,name):
        #重定向
        headers = {
        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:66.0) Gecko/20100101 Firefox/66.0',
        'Accept-Language': 'zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2',
        }
        r = self.res.head(url,headers=headers).headers['Location']
        r = self.res.get(r,headers=headers).content
        #写入文件
        with open(name,'wb') as f:
            f.write(r)


class GUI():
    def __init__(self):
        self.work = DOWNLOAD()
    def setup(self):
        tx1 = sg.Text("请输入地址")
        bx1 = sg.Input()
        bt1 = sg.Button("确定")
        layout = [[tx1,bx1,bt1]]
        window1 = sg.Window("蓝奏云下载",layout=layout)

        a,b = window1.Read()
        
        window1.close()

        interim = self.work.step1(b[0])
        print(interim)
        
        self.work.download(interim[0],interim[1])

x = GUI()
x.setup()


初二生赋闲在家太无聊了就搞了一个(手动狗头)
还有...走过路过的评个分怎么样

版权声明:

本站所有资源均为站长或网友整理自互联网或站长购买自互联网,站长无法分辨资源版权出自何处,所以不承担任何版权以及其他问题带来的法律责任,如有侵权或者其他问题请联系站长删除!站长QQ754403226 谢谢。

有关影视版权:本站只供百度云网盘资源,版权均属于影片公司所有,请在下载后24小时删除,切勿用于商业用途。本站所有资源信息均从互联网搜索而来,本站不对显示的内容承担责任,如您认为本站页面信息侵犯了您的权益,请附上版权证明邮件告知【754403226@qq.com】,在收到邮件后72小时内删除。本文链接:https://www.piaodoo.com/8047.html

搜索