- 浏览: 115398 次
- 性别:
- 来自: 北京
最新评论
-
springdata_spring:
java程序语言学习教程 地址http://www.zuida ...
java多播 -
jveqi:
...
POI导出报表总结 -
liuhu2967:
大哥,我想问你个问题,防止前台(页面)连续触发导出EXCEL ...
POI导出报表总结 -
cqu903:
反射的性能你测试下就知道了,我之前试过,差了1000倍都不止
解决json转换hibernate 结果集对象 -
01jiangwei01:
怎么没写使用方式啊??
解决json转换hibernate 结果集对象
工作无聊,找个事情做做。想想都郁闷,前段想做销售,业务面试通过,却被人事给卡在了,MD,真是扯淡,我的销售,就这样泡汤了。
对新浪大片的采集,大概分为一下几个步骤。
1,java模拟get或者post请求获取大片页面内容
2,使用正则表达式解析出播放页面地址
3,根据播放页面地址,借助其他网站通过get或者post请求和正则表达式找出真实地址
4,使用wget工具执行下载(wget是linux命令,windows使用,需下载安装包,然后配置 path,这样在cmd命令窗口,就可以执行wget命令了)
代码如下:
由于公司网络资源,只下载一个电影,下载后的格式是hlv,改名为flv即可使用暴风影音进行播放。
HttpTookitEnhance模拟http get和post请求类,前面代码已贴出。程序还需要完善, 改用多线程执行,现在效率很低。同时请教牛人,目前只能抓取第一个页的内容,而新浪大片它的分页是通过异步的方式,我怎么获取异步过来的网页内容呢?
参考了牛人雷哥的代码,雷哥,java之牛人也。
对新浪大片的采集,大概分为一下几个步骤。
1,java模拟get或者post请求获取大片页面内容
2,使用正则表达式解析出播放页面地址
3,根据播放页面地址,借助其他网站通过get或者post请求和正则表达式找出真实地址
4,使用wget工具执行下载(wget是linux命令,windows使用,需下载安装包,然后配置 path,这样在cmd命令窗口,就可以执行wget命令了)
代码如下:
import java.io.InputStream; import java.net.URLEncoder; import java.util.ArrayList; import java.util.List; import java.util.regex.Matcher; import java.util.regex.Pattern; /** * * * Title:SinaMovie * Description: 分析sina电影,下载电影 * Copyright: Copyright (c) 2010 * Company: * @author libin * @version */ public class SinaMovie { /** * @param args * @throws Exception */ public static void main ( String [] args ) throws Exception { List<Movie> list = getMovieList(); for ( Movie movie : list ) { List<String> realAddressList= movie.getRealUrlList(); for(String realUrl:realAddressList){ downLoad(realUrl); } } } /** * 获取视频首页的所有电影信息,存放入List中,因为其分页是通过异步方式,目前欠缺分页的视频抓取,需进一步研究 * @return * @throws Exception */ public static List<Movie> getMovieList () throws Exception { String indexUrl = "http://video.sina.com.cn/movie/category/movie/index.html";//sina电影首页地址 String responseContent = HttpTookitEnhance.doGet(indexUrl, null, "UTF-8", false); System.out.println("responseContent==" + responseContent); String reg = "<div class=\"pic\"><a href=\"(.*?)\"(.*?)alt=\"(.*?)\""; Pattern p = Pattern.compile(reg); Matcher macher = p.matcher(responseContent); String preUrl = "http://video.sina.com.cn"; List<Movie> list = new ArrayList<Movie>(); while ( macher.find() ) { String playurl = preUrl + macher.group(1).trim(); System.out.println("" + playurl); String name = macher.group(3).trim(); List<String> realUrlList = getRealAddressList(playurl); System.out.println("2=========="+realUrlList.size()); Movie movie = new Movie(); movie.setName(name); movie.setUrl(playurl); movie.setRealUrlList(realUrlList); list.add(movie); break;//测试只下载一个电影 } return list; } /** * 借助其他网站,分析出电影的真实地址,一个电影对应多个真实地址(被切分) * @param url 电影的网页播放地址 * @return * @throws Exception */ public static List<String> getRealAddressList ( String url ) throws Exception { String _decurl = URLEncoder.encode(url, "UTF-8"); String realurl = "http://www.flvcd.com/parse.php?kw=" + _decurl + "&flag=&format="; String html = HttpTookitEnhance.doGet(realurl, null, "UTF-8", false); Pattern p1 = Pattern.compile("<a href (.*?)\"(.*?)\""); Matcher m = p1.matcher(html); List<String> list = new ArrayList<String>(); while ( m.find() ) { String realUrl = m.group(2).trim(); System.out.println("realUrl---------" + realUrl); list.add(realUrl); } return list; } /** * 借助wget工具,执行下载(wget工具为Linuxg工具,windows使用需下载) * -c 断点续传 -P下载目录 --tries 重试次数 * 测试URL:http://shb5.dhot.v.iask.com/f/1/648cd395f950c82e5bfb45d2fe47c10541885386.hlv * @param downUrl * @throws Exception */ public static void downLoad ( String downUrl ) throws Exception { System.out.println("执行下载:"+downUrl); Runtime run = Runtime.getRuntime(); Process process = run.exec("cmd.exe /c wget -c -P C:\\test --tries=5 --timeout=60 " + downUrl); InputStream in = process.getInputStream(); /* while ( in.read() != -1 ) { System.out.println(in.read()); } in.close();*/ //process.waitFor(); } } /** * 电影信息 * * Title:Movie * Description: * Copyright: Copyright (c) 2010 * Company: * @author * @version */ class Movie { String name;//电影名称 String url;//播放地址 List<String> realUrlList = new ArrayList<String>();//一个电影对应多个地址 public String getName () { return name; } public void setName ( String name ) { this.name = name; } public String getUrl () { return url; } public void setUrl ( String url ) { this.url = url; } public List<String> getRealUrlList () { return realUrlList; } public void setRealUrlList ( List<String> realUrlList ) { this.realUrlList = realUrlList; } }
由于公司网络资源,只下载一个电影,下载后的格式是hlv,改名为flv即可使用暴风影音进行播放。
HttpTookitEnhance模拟http get和post请求类,前面代码已贴出。程序还需要完善, 改用多线程执行,现在效率很低。同时请教牛人,目前只能抓取第一个页的内容,而新浪大片它的分页是通过异步的方式,我怎么获取异步过来的网页内容呢?
参考了牛人雷哥的代码,雷哥,java之牛人也。
- webvideo.rar (356.6 KB)
- 下载次数: 35
发表评论
-
JIT编译
2015-01-14 10:20 785http://ifeve.com/hotspot-jit/ -
Keep-Alive简介及在Tomcat中配置
2013-05-11 19:14 12625Keep-Alive功能使客户端到服务器端的连接持续有效,当出 ... -
java编程细节注意
2013-03-06 09:52 863最近的机器内存又爆满了,除了新增机器内存外,还应该好好revi ... -
POI导出报表总结
2013-03-06 09:34 6313监控报表基于POI导出EXCE ... -
tomcat+apache分布式应用配置
2011-11-11 15:52 16651、 参考 、http://www.iteye.com/top ... -
ssh使用oscache 做分布式缓存初篇
2011-11-11 15:47 3523依赖jar包: jgroups-all.jar concurr ... -
获取节点下所有子节点
2011-06-10 15:18 3222在开发过程中,经常遇到多级数据,譬如部门等,如果想查一个节点下 ... -
java动态代理之一:java Proxy实现
2011-03-26 13:42 1340动态代理类是一个实现在创建类时在运行时指定的接口列表的类。 ... -
解决json转换hibernate 结果集对象
2011-03-18 17:30 4395在使用ext+ssh框架过程中,当使用jsonlib 转换 h ... -
jbpm任务执行问题
2010-12-28 17:30 987如果一个流程 开始->任务1->任务2->任 ... -
java多播
2010-12-09 10:44 18548DatagramSocket只提供一对一的UDP服务。有时 ... -
java模拟http get和post 提交
2010-12-07 16:19 8028使用httpclient工具包commons-httpclie ... -
java实现缩略图和抓屏幕
2010-12-07 10:09 1076import java.awt.Container; imp ... -
初学jbpm总结<一>
2010-11-17 17:45 1112最近想自己搞个OA系统,考虑到流程管理,想使用工作流jbp ... -
java之IO 总结和笔记
2010-10-26 10:38 1031创建一个文件 File f=new File(" ... -
java正则表达式抽取html数据
2010-10-21 20:59 9425由于项目需求,需要抓取一些网站数据,于是这两天研究了下java ... -
单例模式
2010-08-14 19:07 1100单例模式:确保一个类只有一个实例,并提供一个全局访问点。 ... -
spring的JdbcTemplate、NamedParameterJdbcTemplate和SimpleJdbcTemplate
2010-07-21 14:09 9098使用spring自己对数据库操作时,可以使用这三个数据库操作模 ... -
Class的获取与使用
2010-06-30 20:07 1143package study.basic; /** * ... -
在myeclipse配置heritrix1.14.3
2010-06-24 14:00 2939[/b]最近要做个站内搜索,准备使用heritrix爬行数据, ...
相关推荐
- **梗来源**:通过“犬志龙”与“送终鸡”之间的友谊故事,传达了即使在最艰难时刻也不离不弃的情感价值。 #### 艾青的“不是你想埋,想埋就能埋” - **背景**:艾青是中国现代著名诗人。 - **梗来源**:结合...
标题和描述中提到的核心知识点是关于管理者的角色和责任,特别是如何平衡对“大事”、“小事”和“中事”的管理...对于个人来说,也要培养类似的习惯,既能把握大局,又能关注细微,不断提升自身在管理和执行上的能力。
《只管向前奔跑》这篇文章讲述了贝基拉,一个来自埃塞俄比亚的贫苦男孩,从小就梦想成为一名长跑健将。然而,家庭的贫困让他感到自卑和困扰,因为贫穷的他无法负担训练费用,甚至连一双普通的跑鞋都买不起。在一次...
根据提供的文件信息,本文将对其中涉及的数字信号处理中的滤波器设计方法进行详细的解析与总结,主要包括无限冲激响应(IIR)滤波器的设计方法以及有限冲激响应(FIR)滤波器的设计方法。 ### 一、无限冲激响应(IIR)...
前台只管收银,后台只管商品的维护以及数据的处理。前台只限于售货员登录,后台只限管理员登录。前台主要:售货员对客户购买的商品进行结算处理(扫码辨认、收银、结算、找零)。后台主要:对商品维护(添加、修改、...
《只管去做》读书笔记ppt模板,本模板共15P,人的四种状态,年度计划为什么总实现不了,如何设定一个走心的年度计划,给自己写一封 五年后的信,平衡人生九宫格,抬头看路低头走路,如何培养一个好习惯,用4D工作法...
为所有那些每天辛勤耕耘的人们,提供一个文章排版的捷径,用这个软件可以让你不去考虑文章的段落和错行,只管写完,然后,排版的工作就交给它,它的工作会令你以外的惊喜.............................................
1.数据源头提供者,可提供各种场景数据资料,有需求请联系我! 2.数据会分多次上传,供开发者训练使用,用的好请点赞! 3.数据是算法模型训练之...6.价格全网最低,需要什么只管吩咐,只有想不到,没有接不了的数据哦!
* 整个过程大约持续10多分钟的样子,在此期间不能断电,不能拔网线,升级完毕机子会自动重启恢复正常。 2. 升级后的设置教程 由于升级后的版本是新加坡的版本,在这个版本下面无论你输入的账号是什么,机子都会...
Cassandra是一个混合型的非关系的数据库,类似于Google的BigTable。Cassandra的主要特点就是它不是一个数据库,而是由一堆...对于一个Cassandra群集来说,扩展性能是比较简单的事情,只管在群集里面添加节点就可以了。
安卓不错的管理软件,方便管理!更只管的管理手机中的个个不同的,资源!上传下载!查看方便!
改以上三项为你MSSQL数据库的相应名称即可,其他选项切勿修改,否则不能保证系统正常运行(公开了Code的用户除外)。 2、配置好你人才网目录所在的IIS,创建好人才网的应用程序目录。使.NET程序能正常在IIS下运行。 ...
改以上三项为你MSSQL数据库的相应名称即可,其他选项切勿修改,否则不能保证系统正常运行(公开了Code的用户除外)。 2、配置好你人才网目录所在的IIS,创建好人才网的应用程序目录。使.NET程序能正常在IIS下运行。 ...
有些地方为了叙述得完整,也会引用后面要讲的内容,比如说“有关XX我们到XX章再仔细讲解”,凡是这种引用都不是必要的依赖,可以当它不存在,只管继续往下看就行了。 尽量做到每个知识点直到要用的时候才引入。过早...
进销存管理系统源码,不要多问,只管下来看就是了!
1.数据源头提供者,可提供各种场景数据...6.价格全网最低,需要什么只管吩咐,只有想不到,没有接不了的数据哦! 7.本资源包含佩戴安全帽的数据,也包含没有佩戴安全帽的数据,各种角度都有,各种安全帽的颜色也都包含
2. 创业投资风险管理:文件中提到,和传统代运营公司相比,他们只分店铺挣的米,不挣米他们是不收任何费用。等于风险共摊。这说明,在创业过程中,风险管理是非常重要的,企业需要设法规避风险,分摊风险,避免可能...
Python原来这么简单(win系统 提高篇)