网易公开课例有许多翻译的公开课内容,可是我家里使用有线通,看在线总是卡卡的,于是就想着将公开课下载到本地。网易提供了下载,不过一个课程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 false
WebSpec.silent_mode truespec = WebSpec.new.ie
spec.open classurl
spec.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"))end
end
puts "finished"
spec.closeAll()

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

classurl="http://download.v.163.com/dl/open/00DL0QDR0QDS0QeB.html"WebSpec.debug false
WebSpec.silent_mode truespec = WebSpec.new.ie
spec.open classurl
spec.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)end
end
puts "finished"
spec.closeAll()

OK,写完了,

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

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

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

  2. 抓取网易公开课并下载

    原文地址:http://bbs.csdn.net/topics/390361293 View Code 1 # -*- coding: utf-8 -*- 2 #抓取网易公开课下载链接 3 #By : ...

  3. 【Chrome】扩展——下载网易公开课

    为什么80%的码农都做不了架构师?>>>    目的 网易公开课虽然提供了下载链接,但是下载之后的文件名并不正确,需要下载后手动修改文件名,非常不方便.所以本扩展的目标就是在下载的时 ...

  4. 网易公开课python爬取_用python打造网易公开课视频下载软件

    1 #coding:utf-8 2 import urllib 3 from bs4 import BeautifulSoup 4 import chardet 5 import os 6 impor ...

  5. 如何做到像百度云或者网易公开课一样动态更换APP启动图

    http://www.code4app.com/forum.php?mod=viewthread&tid=7632&extra=page%3D2%26filter%3Dsortid%2 ...

  6. Auto.js Pro安卓免ROOT引流脚本开发系列教程27网易公开课(5)-UI界面构建

    课程内容 脚本前端UI界面的构建 创建话术输入框(随机话术) 创建勾选框(性别选择.话术前加入昵称.话术后添加随机符号表情) 开发文档 在线文档 APP名称 网易公开课 APP版本 安卓客户端:v6. ...

  7. Auto.js Pro安卓免ROOT引流脚本开发系列教程23网易公开课(1)-前言

    APP名称 网易公开课 APP版本 安卓客户端:v6.8.1 APP简介 网易公开课提供来自世界一流名校和著名机构的上万集精品视频课程,涵盖各类热门领域,与Web版保持同步更新.速度流畅,画面高清.支 ...

  8. Auto.js Pro安卓免ROOT引流脚本开发系列教程26网易公开课(4)-关注用户

    APP_关注用户() 返回值类型 说明 布尔型 true,关注成功 false,关注失败 等待个人资料页出现(判断是否在个人资料页) 判断关注按钮节点是否存在 判断是否已关注 关注成功后随机延时 开发 ...

  9. Auto.js Pro安卓免ROOT引流脚本开发系列教程25网易公开课(3)-取用户性别

    APP_取用户性别() 返回值类型 说明 整数型 返回值 性别 0 女 1 男 2 无 等待个人资料页出现(判断是否在个人资料页) 判断性别节点是否存在 在性别节点范围内取色 根据色值判断性别 开发文 ...

最新文章

  1. opencv reshape函数详解
  2. Silverlight视频教程、资源下载。如果你觉得看图文不够形象,不够生动,那就看看视频吧。...
  3. CSS弹出二级多列菜单和DIV布局实例 - 仿IBM官网首页
  4. 对话机器学习大神Yoshua Bengio(上)
  5. Flutter mixin用法详解
  6. 智能优化算法:金鹰优化算法-附代码
  7. 阿里云HBase产品体系架构及特性解析
  8. 2012年3月份第1周51Aspx源码发布详情
  9. 前端-图片压缩,基于vue/webpack的tinypng插件
  10. UML之Astah的基本使用教程-4(活动图、序列图、Stereotype Icon)
  11. 巧用RoaringBitMap处理海量数据内存diff问题
  12. 服务器有无线网卡么,全面认识服务器网卡:理论篇
  13. AutoCAD、Revit、Maya、3dsMax出现许可管理器不起作用
  14. 智云通CRM:电销企业如何做好客户管理,提升效率?
  15. jQuery获取、设置标签属性值
  16. 在传染病中,肠道微生物-免疫力-营养在优化治疗策略中的作用
  17. 服务器虚拟化pue,降低数据中心PUE的八个办法
  18. 火车余票查询API 一
  19. 将idea中编译输出目录 classes 里的文件删掉,发现再次编译不能生成class文件
  20. 安全库存——库存策略之一

热门文章

  1. pytorch torchvision 各种版本(包括ARM架构),python第三方库的whl下载地址
  2. 一般做一个网站,需要哪些技术。
  3. 研报精选230526
  4. 研报精选230416
  5. 输入压缩空间量是分区量吗_如何安全、简便的对固态硬盘分区?
  6. Fedora上使用腾讯会议
  7. Mybatis 连接池POOLED
  8. 服务器端Server-U忘记密码的解决办法
  9. 电压反馈型运算放大器的增益和宽带
  10. 万众期待的Dyson Zone空气净化耳机确认将于中国首发,戴森重新定义“好声音”