记一次python爬取樱花动漫
本帖最后由 彳、亍 于 2021-6-8 10:14 编辑网站:http://www.imomoe.la/
目的:显示下载链接,不带下载
说明:
这个网站其实就是调用存储在其他网站上的资源,目前发现有3家:pptv、优酷和土豆
其中有些(很多)好像没了,表现在网页上也不能播,所以无法下载
使用方法:
复制某一具体播放页到程序中,显示整部番下载链接
思路:
http://www.imomoe.la/player/5040-0-0.html
用idm抓下载链接,搜索,注意到
看请求(他大意了,这个请求没有cookie)
搜vid,注意到
明显是播放地址,看请求(话说letv不是乐视吗)
经调试,后面的小数无关紧要,5040是上面的地址里的,搜索176,注意到
至此,优酷的下载搞定了,但这边还有两种土豆的
这种纯数字的方法同上
http://www.imomoe.la/player/1798-0-0.html
注意到
跳转,抓下载链接
http://aliyun.vod.pptv.com/0/0/102400/01b4965fc6e4acf38c761251c1c5b7eb.mp4?h5vod.ver=2.1.5&k=3f50490f3a7d5f1745cff6fe4f9577d3-ac59-1623129343&vvid=39c134ee-68e7-c337-28d0-e9307f352ed1&type=mhpptv&o=0&sv=4.1.18
其中vvid、h5vod.ver、o、sv无影响
拖动进度条,获取其他分段,k值不改变
http://aliyun.vod.pptv.com/1/16501760/21239808/01b4965fc6e4acf38c761251c1c5b7eb.mp4?h5vod.ver=2.1.5&k=3f50490f3a7d5f1745cff6fe4f9577d3-ac59-1623129343&vvid=39c134ee-68e7-c337-28d0-e9307f352ed1&type=mhpptv&o=0&sv=4.1.18
http://aliyun.vod.pptv.com/2/3087360/21484544/01b4965fc6e4acf38c761251c1c5b7eb.mp4?h5vod.ver=2.1.5&k=3f50490f3a7d5f1745cff6fe4f9577d3-ac59-1623129343&vvid=39c134ee-68e7-c337-28d0-e9307f352ed1&type=mhpptv&o=0&sv=4.1.18
不难看出,这个012是分段,后面两个数好像没什么影响
接下来这个接口参考了https://www.52pojie.cn/thread-1169480-1-1.html
https://web-play.pptv.com/webplay3-0-12407631.xml?o=0&version=6&type=mhpptv&appid=pptv.web.h5&appplt=web&appver=4.0.7&cb=a
然后后面都差不多
代码写得很乱
from requests import get
import json
import re
mainurl = 'http://www.imomoe.la'
url1 = input()# http://www.imomoe.la/player/5040-0-0.html
ex = '<script type="text/javascript" src="(/playdata/.*?.js).*?"></script>'
ua = 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.77 Safari/537.36'
ppurl = 'http://v.pptv.com/show/'
dllist = []
headers = {
'Referer': url1,
'User-Agent': ua
}
resp = get(url=url1)
url2 = re.findall(ex, resp.text, re.S)
url2 = mainurl + url2
resp = get(url=url2, headers=headers)
tmp = re.findall(b'(\\[.*\\])', resp.content)
dat = eval(tmp.decode('gbk'))
for l in dat:
if l == '优酷':
for i in l:
vurl = re.findall('\$(.*?)\$', i)
if len(vurl) < 40:
resp1 = get(url='https://v.jialingmm.net/mmletv/mms.php', params={'vid': vurl, 'type': 'letv'})
vurl = re.findall('var video =\'(.*?)\' ;', resp1.text, re.S)
dllist.append(vurl)
break
if l == '土豆' and re.findall('\$(.*?)\$', l).isdigit() == False:
for i in l:
print(i)
vurl = re.findall('\$(.*?)\$', i)
resp1 = get(url=ppurl+vurl+'.html', headers={"User-Agent": ua})
id = re.findall('var webcfg = [{]"id":(.*?)[,]', resp1.text, re.S)
resp2 = get(url=f'https://web-play.pptv.com/webplay3-0-{id}.xml?o=0&version=6&type=mhpptv&appid=pptv.web.h5&appplt=web&appver=4.0.7&cb=a', headers={"User-Agent": ua})
dat = json.loads(resp2.text)
server = dat['childNodes']['childNodes']['childNodes']
rid = dat['childNodes'][-4]['rid']
sum = len(dat['childNodes'][-4]['childNodes']) - 1
kk = dat['childNodes'][-5]['childNodes'][-1]['childNodes'].split('%26')
ll = []
for i in range(sum):
vurl1 = f"https://{server}/{i}/0/1/{rid}?k={kk}&type=mhpptv"
ll.append(vurl)
dllist.append(ll)
break
print(dllist)
print(len(dllist))
测试图
QingYi. 发表于 2021-6-8 12:22
我的理解是目的 : “显示IDM下载图标,但是点进去下载,IDM不会下载”
但是我这边是 可以直接下载
我的意思是我的程序不带下载{:1_924:}
当然可以直接idm下载 彳、亍 发表于 2021-6-8 12:12
怎么了兄弟,没太看懂
我的理解是目的 : “显示IDM下载图标,但是点进去下载,IDM不会下载”
但是我这边是 可以直接下载 我补下测试图 感谢分享,收藏了 东方天涯 发表于 2021-6-8 10:11
看到樱花就进来了,谢谢分享
哈哈,我也是 谢谢分享,,,学习了 谢谢分享 谢谢分享 先收藏 目的:显示下载链接,不带下载
我这个带下载啊 而且IDM还能下载 QingYi. 发表于 2021-6-8 12:06
目的:显示下载链接,不带下载
我这个带下载啊 而且IDM还能下载
怎么了兄弟,没太看懂{:301_998:}