【jsoup爬虫3】用jsoup来实现简单的java爬虫-视频篇
2017-11-30 14:05
549 查看
继上篇的图片篇(http://blog.csdn.net/suqi356/article/details/78579167)和文字篇(http://blog.csdn.net/suqi356/article/details/78547137)后,我们今天来讲讲视频,这里主要是对视频的地址抓包为主,其次利用jsoup获取地址,然后利用JAVA的IO技术来下载处理视频就可以了。
这里使用的Fiddler,这个在第二讲的图片篇里介绍过,这里还是继续拿CSDN微信公众号推荐的那篇python 3简单入门爬虫(http://mp.weixin.qq.com/s/lGenb6F-r8YyoE2ZO0cVSw)里的视频来讲一下Fiddler。
爱奇艺的VIP视频只有会员能看,普通用户只能看前6分钟。比如加勒比海盗5的URL:http://www.iqiyi.com/v_19rr7qhfg0.html#vfrm=19-9-0-1
我们怎么免费看VIP视频呢?一个简单的方法,就是通过旋风视频VIP解析网站。URL:http://api.xfsub.com/
这个网站为我们提供了免费的视频解析,它的通用解析方式是:
比如
我们现在用Fidder来抓包处理:
先访问你需要的解析地址,然后利用Fidder同步抓包
我们可以看到,有用的请求并不多,我们逐条分析。看到一个POST的请求里面有个字段比较怪。
这个POST请求有四个参数,分别为time、key、url、type。记住这个有用的信息,我们在抓包结果中,找一下这个请求,看看这个POST请求做了什么。
很显然,这个就是我们要找的POST请求,我们可以看到POST请求的参数以及返回的json格式的数据。其中url存放的参数如下
把里面的转义符改一下,再加上这个网站的头地址,出现如下:
我们来访问一下这个地址,发现
有个video下的file标签里有个地址,那我们在看看这个地址是不是影片存放的真实地址呢?拿出来在访问一下。
发现果真如此,那么这个地址就是真实地址了,我们既然已经分析到真实地址了,那我们的代码就好写了,我们的IO下载也方便了。
附一个简单的代码:
这里使用的Fiddler,这个在第二讲的图片篇里介绍过,这里还是继续拿CSDN微信公众号推荐的那篇python 3简单入门爬虫(http://mp.weixin.qq.com/s/lGenb6F-r8YyoE2ZO0cVSw)里的视频来讲一下Fiddler。
爱奇艺的VIP视频只有会员能看,普通用户只能看前6分钟。比如加勒比海盗5的URL:http://www.iqiyi.com/v_19rr7qhfg0.html#vfrm=19-9-0-1
我们怎么免费看VIP视频呢?一个简单的方法,就是通过旋风视频VIP解析网站。URL:http://api.xfsub.com/
这个网站为我们提供了免费的视频解析,它的通用解析方式是:
http://api.xfsub.com/index.php?url=[播放地址或视频id]
比如
http://api.xfsub.com/index.php?url=http://www.iqiyi.com/v_19rr7qhfg0.html#vfrm=19-9-0-1
我们现在用Fidder来抓包处理:
先访问你需要的解析地址,然后利用Fidder同步抓包
我们可以看到,有用的请求并不多,我们逐条分析。看到一个POST的请求里面有个字段比较怪。
这个POST请求有四个参数,分别为time、key、url、type。记住这个有用的信息,我们在抓包结果中,找一下这个请求,看看这个POST请求做了什么。
很显然,这个就是我们要找的POST请求,我们可以看到POST请求的参数以及返回的json格式的数据。其中url存放的参数如下
xfsub_api\/url.php?key=b84da86e6fff5deedf866c4cbd632eb4&time=1510818645&url=http%3A%2F%2Fwww.iqiyi.com%2Fv_19rr7qhfg0.html&type=iqiyi&xml=1
把里面的转义符改一下,再加上这个网站的头地址,出现如下:
http://api.xfsub.com/xfsub_api/url.php?key=b84da86e6fff5deedf866c4cbd632eb4&time=1510818645&url=http://www.iqiyi.com/v_19rr7qhfg0.html&type=&xml=1
我们来访问一下这个地址,发现
有个video下的file标签里有个地址,那我们在看看这个地址是不是影片存放的真实地址呢?拿出来在访问一下。
发现果真如此,那么这个地址就是真实地址了,我们既然已经分析到真实地址了,那我们的代码就好写了,我们的IO下载也方便了。
附一个简单的代码:
public static void get_html(String headurl , String url) { String urls = headurl+url; Map<String, Object> map = new HashMap<String, Object>(); try { Document doc = Jsoup.connect(urls) .userAgent("Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0; MALC)") .timeout(999999999) .header("Accept", "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8") .header("Accept-Encoding", "gzip, deflate") .header("Accept-Language", "zh-cn,zh;q=0.8,en-us;q=0.5,en;q=0.3") .header("Connection", "keep-alive") .header("Host", "www.xfsub.com") .header("Referer", "http://api.xfsub.com/") //是忽略请求类型 .ignoreContentType(true) .get(); Elements elements = doc.getElementsByTag("script").eq(5); for (Element element : elements) { String[] data = element.data().toString().split("function"); for (String variable : data) { if (variable.contains("url.php")) { String[] variables = variable.toString().split("hp\","); for (String str : variables) { if (str.contains("time") || str.contains("key")) { String strs = str.substring(2, str.length()-8); String[] kvp = strs.split(","); for(String value: kvp){ String[] values = value.split("\""); map.put(values[1].trim(), values[3].trim()); } } } } } } String openUrl = "http://api.xfsub.com/xfsub_api/url.php?key="+map.get("key")+"&time="+map.get("time")+"&url="+url+"&type=&xml=1"; Document docs = Jsoup.connect(openUrl) .userAgent("Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0; MALC)") .timeout(999999999) .header("Accept", "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8") .header("Accept-Encoding", "gzip, deflate") .header("Accept-Language", "zh-cn,zh;q=0.8,en-us;q=0.5,en;q=0.3") .header("Connection", "keep-alive") .header("Host", "www.xfsub.com") .header("Referer", urls) //是忽略请求类型 .ignoreContentType(true) .get(); System.out.println(docs); } catch (Exception e) { e.printStackTrace(); } } public static void main(String[] args) throws Exception { String headurl = "http://api.xfsub.com/xfsub_api/?url="; String url="http://www.iqiyi.com/v_19rr7qhfg0.html#vfrm=19-9-0-1"; get_html(headurl , url); }
相关文章推荐
- java简单实现爬虫、jsoup实现网页抓取、POI实现数据导出Excel
- java+jsoup实现简单网络爬虫
- 基于Java的简单网络爬虫的实现--下载Silverlight视频
- Java爬虫学习:利用HttpClient和Jsoup库实现简单的Java爬虫程序
- 【jsoup爬虫2】用jsoup来实现简单的java爬虫-图片篇
- 关于使用Java实现的简单网络爬虫Demo
- 网络爬虫(四) Java实现简单的网络爬虫
- Java实现简单的网络爬虫
- 搜索引擎----Java实现一个简单的网络爬虫
- Java之——简单的网络爬虫实现
- java实现的简单网页爬虫:Servlet + MySQL5.5
- 简单的java爬虫实现
- 用JAVA实现简单爬虫多线程抓取
- Java实现爬虫给App提供数据(Jsoup 网络爬虫)
- java实现的简单网页爬虫:Servlet + MySQL5.5(二)
- 网络采集器Demo:Jsoup+Java多线程实现[爬虫](上)
- FFmpeg在Linux下的简单安装并与Java结合获取视频缩略图功能实现
- Java爬虫,信息抓取的实现(Jsoup)转载,仅用于学习
- 网络采集器Demo:Jsoup+Java多线程实现[爬虫](下)
- Java实现简单的网络爬虫