Watij,配合JRuby截取网易公开课下载列表

  网易公开课例有许多翻译的公开课内容,可是我家里使用有线通,看在线总是卡卡的,于是就想着将公开课下载到本地。网易提供了下载,不过一个课程20多集课,一个一个手动,太麻烦,就想使用jruby是不是可以将某节课批量将下载地址截取下面。

     原本以为使用open_uri加上hpricot解析html就可以批量获取url,不过一分析下载页面,发现html的下载地址是通过js动态写入的,无法通过解析html获得,通过搜索找到了JRuby下的一款浏览器自动化测试工具Watij。

     Watij的作用

     Watij作用和Ruby下大名鼎鼎的工具Watir一样,使用Java开发,包含一套JRuby的接口,非常好用。支持模拟IE、Firefox,通过它可以自动使用浏览器做很多事,获取下载地址简直是小事一桩。

     Watij官网地址:http://watij.com/webspec-api/  包含基本的使用接口和方法

 

     下载公开课的相关代码(代码属于“即用即抛”脚本,仅供参考):

      1.获取公开课的下载地址列表:

classurl="http://download.v.163.com/dl/open/00DL0QDR0QDS0QeB.html"WebSpec.debug falseWebSpec.silent_mode truespec = WebSpec.new.iespec.open classurlspec.pause(1000)File.open("link.html","w") do |f|tag=spec.jquery("#download ul li:first-child a")0.upto(tag.all.length-1) do |i|f.puts(tag.at(i).get("href"))endendputs "finished"spec.closeAll()

 

    2.获取每堂课的介绍文字

classurl="http://download.v.163.com/dl/open/00DL0QDR0QDS0QeB.html"WebSpec.debug falseWebSpec.silent_mode truespec = WebSpec.new.iespec.open classurlspec.pause(1000)File.open("health_library.txt","w") do |f|classnametag=spec.jquery("#h1title")classname=classnametag.innerTextif classname=~/《(.+?)》/classname=$1endf.puts ("Course Name: "+classname)tag=spec.jquery("#download .k1")0.upto(tag.all.length-1) do |i|f.puts(tag.at(i).innerText)endendputs "finished"spec.closeAll()
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值