爬虫目的
实现对各大视频网站vip电影的下载,因为第三方解析网站并没有提供下载的渠道,因此想要实现电影的下载。
实现思路
1.选择一个合适的vip解析网站,这里选择了无名小站的接口,因为尝试了很多网站,有些网站想要爬取很困难,无名小站相对简单,接口为www.wmxz.wang/video.php"color: #ff0000">页面分析
我使用Fiddler抓包,首先,浏览器进入接口,这里随便加一个vip电影的链接,然后来看post请求:
我们已经知道了提交post请求的url,箭头所指的地方是提交的表单,里面的url就是我们要下载vip电影的ur,出现%3F这些是因为将url编码为了ASCII码,这里可能使用urllib对其进行解析,很简单;vkey需要我们获取,其实它就藏在Post请求之前get请求返回的页面中,vkey是动态变化的,每一次都不一样。红线部分是服务器返回的信息,前几天我爬取的时候里面的url还是电影的下载链接,现在变成了一个m3u8文件,里面的网址也是编码后的,我们需要用urllib进行解码,我们手动打开https://youku.cdn2-okzy.com/20200408/8808_23a9c669/index.m3u8看看里面的内容,下载后打开
发现里面并没有我们想要的ts文件,但是在文件中有一行1000k/hls/index.m3u8,也是以m3u8为后缀的,使用前面的url与文件中的部分地址拼接,结果为: https://youku.cdn2-okzy.com/20200408/8808_23a9c669/1000k/hls/index.m3u8,再次用浏览器手动打开,下载内容后发现里面是一个个ts文件,最后将ts文件下载后拼接即可(因为我爬的时候还是电影链接,写博客时发现改了,所以拼接方法我也不会,网上应该容易找到)。
下面我们只要获取vkey就可以得到这些ts文件地址了,我们向前看,找返回内容有vkey的get请求:
对比发现和post请求中的vkey一样,接下来就可以开始编写代码了。
代码实现
获取vkey,从上面的分析我们可以知道,get请求的网址为
https://www.administratorm.com/WANG.WANG/index.php"htmlcode">
headers1 = { 'User-Agent':'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.88 Safari/537.36', 'Referer':'https://www.administratorm.com/index.php"请输入电影url链接:") print("请稍等!") get_key_url = 'https://www.administratorm.com/WANG.WANG/index.php"htmlcode">sess = requests.session() vkey = get_key(sess,get_key_url) def get_key(sess,get_key_url): logging.captureWarnings(True) response = sess.get(get_key_url,headers=headers1,verify=False) response.encoding=response.apparent_encoding content = response.text vkey = re.findall('vkey.*"htmlcode">datas = make_dataform(parsed_url,vkey) def make_dataform(parsed_url,vkey): datas = { 'url':parsed_url, 'wap':'0', 'ios':'0', 'vkey':vkey, 'type':'' } return datas3.发送post请求,这里再次说明,由于我原来post请求返回的信息是电影下载地址,所以我获得的url是下载地址,现在再提交post请求获得的是m3u8文件。
download_url = post(sess,datas) def post(sess,datas): response = sess.post(api_url,headers=headers2,data=datas) response.encoding=response.apparent_encoding u = json.loads(response.text) return u['url']4.下载电影,由于链接不同,我就把我下载电影的代码放到这里,做个参考。
down_load(sess,download_url) def down_load(sess,download_url): print("正在准备下载电影") response = requests.get(download_url,headers=headers2,verify=False) total_size = response.headers['Content-Length'] print("将要下载的电影大小:{}MB".format(round(int(total_size)/1024/1024,2))) batch_size = int(total_size)//100 #返回迭代器:是将二进制流按大小分割之后的 k = input("请输入文件路径(C/D):") filename = input("请输入保存文件名:") with open(r"{}:/电影/".format(k)+filename+".mp4",'wb') as f: i = 0 for content in response.iter_content(chunk_size=batch_size): f.write(content) print('\r','#'*i+' 已下载{}%'.format(i),end='\r',flush=True) i += 1 print("下载成功")程序界面
使用PyQt5将上面的代码包装起来,使其更加美观,并添加一些功能,由于WebEngineView已经不能播放flash了,并且有些需要新建标签的链接打不开,所以中间的浏览器很鸡肋,就图个好看吧。
这里就不详细讲了,PyQt5也比较简单,容易上手,如果需要的话联系我吧。
总结
这是我第一次写博客,如果哪里有问题请及时指出来,欢迎大家指正错误,此爬虫项目只用于入门,请不要用其盈利。否则,后果自负!
免责声明:本站文章均来自网站采集或用户投稿,网站不提供任何软件下载或自行开发的软件! 如有用户或公司发现本站内容信息存在侵权行为,请邮件告知! 858582#qq.com
RTX 5090要首发 性能要翻倍!三星展示GDDR7显存
三星在GTC上展示了专为下一代游戏GPU设计的GDDR7内存。
首次推出的GDDR7内存模块密度为16GB,每个模块容量为2GB。其速度预设为32 Gbps(PAM3),但也可以降至28 Gbps,以提高产量和初始阶段的整体性能和成本效益。
据三星表示,GDDR7内存的能效将提高20%,同时工作电压仅为1.1V,低于标准的1.2V。通过采用更新的封装材料和优化的电路设计,使得在高速运行时的发热量降低,GDDR7的热阻比GDDR6降低了70%。
更新日志
- 完美倒立.2024-夜色碳酸【草台回声】【FLAC分轨】
- 杨青《半山听雨贰HQ》头版限量编号[低速原抓WAV+CUE]
- 白玛多吉《云上西藏1+2》DTS-WAV
- 模拟之声慢刻CD《柏林之声3》[正版CD原抓WAV+CUE]
- 威神V(WayV)《The Highest》[FLAC/分轨][259.1MB]
- 余超颖《迷焕纪》[320K/MP3][201.15MB]
- 余超颖《迷焕纪》[FLAC/分轨][784.22MB]
- 温岚.2005-爱回温新歌加精选2CD【阿尔发】【WAV+CUE】
- 尤雅.1990-台语怀念金曲特选辑【太阳神】【WAV+CUE】
- 群星.2024-七夜雪电视剧影视原声带【听见时代】【FLAC分轨】
- 群星《胎教音乐 古典钢琴曲与水晶摇篮曲》[320K/MP3][134.14MB]
- 群星《胎教音乐 古典钢琴曲与水晶摇篮曲》[FLAC/分轨][654.13MB]
- 许惠钧《睡眠钢琴与校园民歌金曲 空灵新世纪催眠曲》[320K/MP3][201.15MB]
- wbg战队国籍分别都是哪里的 wbg战队2024阵容国籍介绍
- wbg战队教练是韩国人吗 s14wbg战队教练国籍介绍