彳、亍 发表于 2021-6-8 10:09

记一次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))


测试图

彳、亍 发表于 2021-6-8 12:26

QingYi. 发表于 2021-6-8 12:22
我的理解是目的 : “显示IDM下载图标,但是点进去下载,IDM不会下载”
但是我这边是 可以直接下载

我的意思是我的程序不带下载{:1_924:}
当然可以直接idm下载

QingYi. 发表于 2021-6-8 12:22

彳、亍 发表于 2021-6-8 12:12
怎么了兄弟,没太看懂

我的理解是目的 : “显示IDM下载图标,但是点进去下载,IDM不会下载”
但是我这边是 可以直接下载

东方天涯 发表于 2021-6-8 10:11

彳、亍 发表于 2021-6-8 10:12

我补下测试图

albatron 发表于 2021-6-8 10:20

感谢分享,收藏了

白衣国度 发表于 2021-6-8 10:52

东方天涯 发表于 2021-6-8 10:11
看到樱花就进来了,谢谢分享

哈哈,我也是

yjn866y 发表于 2021-6-8 11:24

谢谢分享,,,学习了

ab1582820166 发表于 2021-6-8 11:28

谢谢分享

费路哥尼 发表于 2021-6-8 11:43

谢谢分享 先收藏

QingYi. 发表于 2021-6-8 12:06

目的:显示下载链接,不带下载
我这个带下载啊 而且IDM还能下载

彳、亍 发表于 2021-6-8 12:12

QingYi. 发表于 2021-6-8 12:06
目的:显示下载链接,不带下载
我这个带下载啊 而且IDM还能下载

怎么了兄弟,没太看懂{:301_998:}
页: [1] 2 3
查看完整版本: 记一次python爬取樱花动漫