使用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 抓取。
现在都没有想到什么好的办法,抓取到前台渲染后的数据。求高人指点
腾讯视频: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 抓取。
现在都没有想到什么好的办法,抓取到前台渲染后的数据。求高人指点
相关文章推荐
- 手机访问本地电脑网站
- jsf架构
- 找到一款不错的网站压力测试工具webbench
- 记录IT学习有用的网站
- 架构:Android的MVC
- iis网站连接池状态分析 网站性能分析
- 什么是域名?什么网站名?什么是URL?
- 我决定把 Expper 文章收藏和分享网站的源码开源了
- 亿级PV超大型网站集群架构图形深度揭秘讲解
- SAP HANA视频资料分享
- wget 下载整个网站,或者特定目录
- 韩购物网站服务器遭黑客攻击 千万用户信息被泄
- 记一次学习冯大辉的网站运维之道
- 手机服务器微架构与实现
- 【Android进阶】 高仿微信5.2.1主界面架构 包含消息通知
- 学习TOGAF企业架构的必要性——上海信息化培训中心
- 【手写SORM框架】_思想介绍_架构介绍JAVA280
- 高可用(负载均衡)MYSQL(读写分离,主从切换)
- 架构设计:系统间通信(42)——自己动手设计ESB(3)
- 理解RESTful架构