![]() PyQt5 93篇 PyQt5:抖音1分钟,人间2小时(抖音视频下载小工具)-3 导读:代码解析-1 LEARN MORE 正文 今天我们来学习下代码。 01 多线程下载 相关多线程的知识点,可以参考:
下面我们来看下代码: parsesignal = pyqtSignal(str)downsignal = pyqtSignal(list) 我们弄两个信号,一个是给解析视频url用的,一个是给下载视频用的。 defrun(self): resParse = self.ParsingVideo() 多线程里面跑的函数,先看看视频解析是否成功,成功了才下载。 defParsingVideo(self): userAgent = ["Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/535.1 (KHTML, like Gecko) Chrome/14.0.835.163 Safari/535.1", "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:6.0) Gecko/20100101 Firefox/6.0", "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/534.50 (KHTML, like Gecko) Version/5.1 Safari/534.50", "Opera/9.80 (Windows NT 6.1; U; zh-cn) Presto/2.9.168 Version/11.50"] key = random.randint(0,3) headers = {'content-type': 'application/json', 'User-Agent': userAgent[key]} 解析视频用的代码。 userAgent我这里做过了个列表,里面放了4个常用的浏览器ua。 key = random.randint(0,3) 每次解析随机选择一个ua进行操作。也算是避免频繁操作被抖音屏蔽吧,虽然可能实际效果不大。 把http访问放在try…except…里面,出现异常好及时处理。 res1 = requests.head(self.shareUrl, headers=headers, allow_redirects=False)self.cookies = res1.cookiesredirecturl1 = res1.headers["Location"] requests库的使用方法,取得跳转后的url。 res2 = requests.get(redirecturl1, headers=headers, cookies=self.cookies)playUrl = re.findall(r"playAddr: (.*?),", res2.text, re.S)[0][1:-1] 我们对跳转后的url进行get操作,根据网页源码取得第二次跳转前的url。如下图,这个就是跳转前的地址,这里我们用正则表达式取得。 ![]() res3 = requests.head(playUrl, headers=headers, allow_redirects=False, cookies=self.cookies)self.downloadUrl = res3.headers["Location"] 取得第二次跳转后的url。 except: self.downloadUrl = "parse error" 要是解析失败,我们把url设置成”parse error”。 最后发出解析后的url信号,并返回。 defdownLoadVideo(self): r = requests.get(self.downloadUrl, stream=True, cookies=self.cookies) length = float(r.headers['content-length']) count = 0 time1 = time.clock() 这个函数也是requests基本操作,下载相应的文件并计算平均下载速度,大家可以自己体会下。 最后把下载进度和平均下载速度作为信号发射出去。 03 最 后 今天的内容就到这儿!下期我们再见!如果你喜欢本篇文章,请给我点赞 ![]() 赞赏(推荐 ![]() ) 分享给你的好友们吧! 欢迎关注微信公众号:学点编程吧。 加油!(ง •̀_•́)ง (*•̀ㅂ•) 给我加个鸡腿吧!( ̄︶ ̄)↗ ![]() 加入我们的学习交流QQ群,一起学习吧! ![]() 看完本文有收获?请转发分享给更多人 ![]() 猜你喜欢: 更多的PyQt5文章请在微信公众号/使用指南/在线学堂/图文教程中查找。 ![]() ![]() ---------------------------------------------------------------------------------------------------------------------- 我们尊重原创,也注重分享,文章来源于微信公众号:学点编程吧,建议关注公众号查看原文。如若侵权请联系qter@qter.org。 ---------------------------------------------------------------------------------------------------------------------- |