获取腾信新闻APP文章、真实视频地址解析

由于业务需要,需要抓取解析腾讯视频真实地址、文章中的数据。经过1天的摸索,终于分析出来了,步骤如下:

一、获取发送Https请求文章地址返回的信息,经查看

中无任何文章信息,到这个地方可以确定,腾讯新闻文章是浏览器客户端进行解析数据装配的。此时就需要看js代码,发现里面的数据有unicode编码格式。需要把代码unicode转译一下,我这里使用java语言apache-common-lang包方法转码,信息中有用的就是"; // 获取可解析的json字符串数据 String str = jsStr.substring(jsStr.indexOf("")); // unicode转码 str = StringEscapeUtils.unescapeJava(str); // 部分字符替换转义,防止json解析报错 str = str.replaceAll("\"\\{", "\\{").replaceAll("\\}\"", "\\}"); // 转化为JSON对象处理 JSONObject jsonObject = JSON.parseObject(str); // 获取所有内容 JSONObject jsonContent = jsonObject.getJSONObject("content");

解析后的json主要数据如下:

{
    "content": {
        "cnt_attr": {
            "IMG_0": {
                "img": {
                    "imgurl0": {
                        "imgurl": "http://inews.gtimg.com/newsapp_match/0/8386465468/0"
                    }
                }
            },
            "IMG_1": {
                "img": {
                    "imgurl0": {
                        "imgurl": "http://inews.gtimg.com/newsapp_match/0/8391248870/0"
                    }
                }
            },
            "VIDEO_0": {
                "img": {
                    "imgurl1000": {
                        "imgurl": "http://inews.gtimg.com/newsapp_ls/0/8386704268_640480/0"
                    }
                },
                "vid": "s0856no20s6"
            }
        },
        "cnt_html": "

焦作市解放区区委相关部门了解到,事发系幼儿园一名教师向当日中班的食物中投入亚硝酸盐,目前,该教师已被警方刑拘。

", "desc": "焦作市解放区区委相关部门了解到,事发系幼儿园一名教师向当日中班的食物中投入亚硝酸盐", "image_count": 2, "longtitle": "河南焦作幼师*屏蔽的关键字*致23名幼儿*屏蔽的关键字*:知情人称因两老师闹矛盾", "pub_time": "2019-04-02 08:19:27", "pubtime": "2019-04-02", "source": "新京报", "title": "河南焦作幼师*屏蔽的关键字*致23名幼儿*屏蔽的关键字*:知情人称因两老师闹矛盾" } }

通过数据可以获取到文章的相关信息

这里重点说一下视频解析的相关步骤:

二、获取视频关键参数vid

1、如果是纯视频网站,例如:https://view.inews.qq.com/a/20190311V0HAK600?uid=&cur_vid=s084748qz5b

根据cur_vid的值获取vid

2、如果是文章中嵌入视频:则通过前面获取到的json数据 获取到VIDEO_0中的vid

三、通过vid获取到视频的真实路径地址

发起一个http get请求 地址:http://vv.video.qq.com/getinfo?platform=101001&charge=0&otype=json&defn=shd&vids=vid值

返回信息做一下处理,转化成json格式,主要json格式数据如下:

{
	"vl": {
        "vi": [
            {
                "fn": "s0856no20s6.mp4",
                "fvkey": "4112E6BB6363A83937E2E5829C6565DDB5839AFF0653754DEFA66AE8780765559E69EEBE139DB246CA80D1F5EAAA0BB8FE6EFCFDAB2C1BB22B64E9BEF9F59CA17D3DBDC068BC23FAD136251E8A7D6C01313E9BA16027D0C661334F7A7DB7934172D535D1AE1486F5",
                "ti": "焦作一幼儿园老师投毒致23名幼儿中毒 知情人称因两老师闹矛盾",
                "ul": {
                    "ui": [
                        {
                            "url": "http://14.215.93.155/om.tc.qq.com/AgATFdfgDgaHAbqs7mZP-J39GAhMgjQvFUS1dcILxHok/uwMROfz0r5zEYaQXGdGnC2dfDmYZuJ2pY2FAhIKRx44JHPsG/"
                        },
                        {
                            "url": "http://ugcws.video.gtimg.com/uwMROfz0r5zEYaQXGdGnCmdfDmaF5AooPRaJaJ0-CXKTz0g7/"
                        }
                    ]
                }
            }
        ]
    }
}

这里需要三个值: fn值,fvkey值,url值(取一个)

四、组装视频真实地址

最终视频地址就是 url+fn+"?"+fvkey=fvkey值

这里是拼接后的地址:

http://ugcws.video.gtimg.com/uwMROfz0r5zEYaQXGdGnCmdfDmaF5AooPRaJaJ0-CXKTz0g7/s0856no20s6.mp4?vkey=4112E6BB6363A83937E2E5829C6565DDB5839AFF0653754DEFA66AE8780765559E69EEBE139DB246CA80D1F5EAAA0BB8FE6EFCFDAB2C1BB22B64E9BEF9F59CA17D3DBDC068BC23FAD136251E8A7D6C01313E9BA16027D0C661334F7A7DB7934172D535D1AE1486F5

直接访问就可以获取到真实的视频地址,也可以直接保存成对应格式文件

你可能感兴趣的:(Java笔记)