您的位置:首页 > 运维架构 > 网站架构

使用java 爬虫 抓取youtube,youku,facebook 等视频网站的视频数据(请求规则的分析)

2016-07-28 20:39 1826 查看
最近 使用java爬虫  抓取了公司放在一些视频网站上的视频的指定数据,记录一下抓取规则

腾讯视频:http://c.v.qq.com/vchannelinfo?otype=json&uin=4bcc58a21d74f0657fdb7a4974c77e1b&qm=1&pagenum=(page)&num=24&sorttype=0&orderflag=0&callback=jQuery19102607487831264734_1466146305889&low_login=1&_=1466146305896

使用该ajax 可以直接抓取指定的视频数据-------(page) 为页数

vimeo:  http://vimeo.com/dji/videos/page:(page)/sort:date/format:detail

youtube 上点击更多的时候才会加载更多视频,
http://www.youtube.com/browse_ajax?action_continuation="+i+"&continuation="+param
该ajax 地址  i  为点击的次数  param 为动态参数可以在ajax 中获取,第一次可以在页面获取该属性(data-uix-load-more-href)

facebook: facebook 上最吐血
http://www.facebook.com/ajax/pagelet/generic.php/PagesVideoHubAllVideosPagelet?dpr=1&data=%7B%22last_fbid%22%3A(last_fbid)%2C%22page%22%3A(page)%2C%22cursor%22%3A%22(cursor)%22%7D&__user=0&__a=1&__dyn=7xeUmGdg42Q5E9EdpbGEW8xdLFwgoqwXCxybxu13wmeexZ3orxuE98KaxeUW2y5pQEiwIVVojxC4oKLypUlxq9wxwJDwloCcxG48hwj8f8&__req=b&__be=-1&__pc=PHASED%3ADEFAULT&__rev=2467498
他的ajax 地址上有三个参数,last_fbid为当前页最后一个视频的id,page 为《meta  property=al:ios:url content=???》 content 的值。最后一个指针参数是要在你获取ajax 后在json 中解析出来的,但是第一次指针参数可以忽略,之后就必须加,不然就会不断出现重复数据。

总结遇到的问题:

1. 抓取出来的json 字符串出现无法进行转化为 json 对象,

可以用写入流再写出来

StringBuffer jsonData=new StringBuffer();
//为了将字符串变成json对象进行流编码转换
BufferedReader br = new BufferedReader(new InputStreamReader(new ByteArrayInputStream(responseBody.getBytes())
,"UTF-8"));
String line;
while ( (line = br.readLine()) != null ) {
   jsonData.append(line);
}
JSONObject htmlJson=new JSONObject(jsonData.toString());

以上是我在抓取的时候无法抓到用js 动态生成的数据,采用ajax 抓取。

现在都没有想到什么好的办法,抓取到前台渲染后的数据。求高人指点
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: