使用ruby获取yobo的飙升榜

2024-04-24 04:33:16
这里使用ruby里面非常实用的库 mechanize和hpricot
sudo gem install hpricot
sudo gem install mechanize

首先准备两个文件

head.html
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="author" content=" [email]service@yobo.com[/email] "/>
<meta name="Copyright" content="www.yobo.com 版权所有,违者必究" />
            <title>飙升榜单 < YOBO - YOBO 友播 音乐DNA</title>
            <meta name="keywords" content="飙升榜单,YOBO,音乐DNA,音乐心理测试,音乐推荐,免费音乐,在线试听,YOBO,友播" />
            <meta name="description" content="在YOBO查看单曲飙升榜" />

<link rel="shortcut icon" href="/favicon.ico" />
<link href="http://assets.yobo.com/stylesheets/yobo_nav_v4.11590.css" media="screen" rel="Stylesheet" type="text/css" />
<link href="http://assets.yobo.com/stylesheets/yobo_base.10705.css" media="screen" rel="Stylesheet" type="text/css" />
<link href="http://assets.yobo.com/stylesheets/yobo_feed.11912.css" media="screen" rel="Stylesheet" type="text/css" />
<script src="http://assets.yobo.com/javascripts/base.9902.js" type="text/javascript"></script>
<script src="http://assets.yobo.com/javascripts/yobo_nav.10930.js" type="text/javascript"></script>
<script language="javascript" type="text/javascript" src="http://assets.yobo.com/javascripts/fckeditor/fckeditor.js"></script>
<script language="javascript" type="text/javascript" src="http://assets.yobo.com/javascripts/yobo_const_10839.js" charset="utf-8"></script>
<link href="http://assets.yobo.com/stylesheets/yobo_aggr.8548.css" media="screen" rel="Stylesheet" type="text/css" />
<script src="http://assets.yobo.com/javascripts/yobo_base.11954.js" type="text/javascript"></script>
<script src="http://assets.yobo.com/javascripts/yobo_aggr.7969.js" type="text/javascript"></script>

</head>

<body>
  <script type="text/javascript">
         var s_rise_playlist = [];
  </script>
                <form id="aggrmusicrise_risetable" class="aggr_block" onsubmit="return false;">  
                        <table class="aggrmusic_risetable" cellpadding="0" cellspacing="0">

end.html
</table>                            
</form>

<div id="yobosongplayerblock" style="height:1px;">
        <object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=9,0,45,0" width="1" height="1" id="pagesongplayer" align="middle">
                <param name="allowScriptAccess" value="always" />
                <param name="movie" value="http://assets.yobo.com/flash/sh/shell.swf" />
                <param name="quality" value="high" />
                <param name="bgcolor" value="#ffffff" />
                <embed src="http://assets.yobo.com/flash/sh/shell.swf" quality="high" bgcolor="#ffffff" width="1" height="1" name="pagesongplayer" align="middle" allowScriptAccess="always" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer"> </embed>
        </object>
        <object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=9,0,45,0" width="1" height="1" id="popconnector" align="middle">
                <param name="allowScriptAccess" value="always" />
                <param name="movie" value="http://assets.yobo.com/flash/pop/local_8657.swf" />
                <param name="quality" value="high" />
                <param name="bgcolor" value="#ffffff" />
                <embed src="http://assets.yobo.com/flash/pop/local_8657.swf" quality="high" bgcolor="#ffffff" width="1" height="1" name="popconnector" align="middle" allowScriptAccess="always" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer"> </embed>
        </object>
</div>
        <div id="yoboaggr_floathintdialog" style="position:absolute; width:290px; left:0px; top:0px; display:none; z-index:4000;">
        <div style="height:7px; font-size:1px; background:url(/p_w_picpaths/icons/aggr_floathintbg.gif) no-repeat left bottom;"> </div>
        <div style="border-left:1px solid #c2d7ea; border-right:1px solid #c2d7ea; border-bottom:1px solid #c2d7ea; padding:3px 8px; background-color:#f4faff; line-height:20px; color:#006ad0;">
                <div id="yoboaggr_floathintdialogheader" style="font-weight:bold; display:none;"></div>
                <div id="yoboaggr_floathintdialogcontent"></div>
        </div>
</div>
        <div style="position:absolute; left:-1000px; top:-1000px">
        <img src="/p_w_picpaths/icons/yoboheaderlinkbg.gif" />
        <img src="/p_w_picpaths/icons/leftbar_linkbg.gif" />
        <img src="/p_w_picpaths/icons/leftbar_coloricons.gif" />
        <img src="/p_w_picpaths/icons/leftbar_hovericons.gif" />
        <img src="/p_w_picpaths/icons/indexme_feedbg2.gif" />
        <img src="/p_w_picpaths/icons/userbox_iconcolor.gif" />
</div>
        <script language="javascript" type="text/javascript">
        //initPageInterface();
        window.setTimeout('initPageInterface()', 1000);
        //Event.observe(window, "load", yobo_oninitpageplayer.bindAsEventListener(this));
</script>
</div>
<script language="javascript" type="text/javascript">
        var v = "0.0424833368770254";
</script>
<script type="text/javascript">
var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
document.write("\<script src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'>\<\/script>" );
</script>
<script type="text/javascript">
var pageTracker = _gat._getTracker("UA-848223-1");
pageTracker._initData();
pageTracker._trackPageview();
</script>
</body>
</html>

然后呢, 打开你最习惯的代码编辑器, 使用如下代码
yobo_music.rb
require "rubygems"
require "mechanize"

agent = WWW::Mechanize.new
page = agent.get "http://www.yobo.com/s/rise?fr=2"
musics = page.search "//td.risesong"
tm = File.new("tm.html", "w+")
head = File.new("head.html", "r")
tm.syswrite head.read
head.close
musics.each do |music|
    tm.syswrite "<tr>"
    tm.syswrite music.to_html
    tm.syswrite "</tr>"
end

end_file = File.new("end.html", "r")
tm.syswrite end_file.read
end_file.close

tm.close

最后, 我未检测过是否必须登录才可以听歌, 如果确实要登录, 你可以尝试这样
yobo_login.rb
require "rubygems"
require "mechanize"

agent = WWW::Mechanize.new
page = agent.get    "http://www.yobo.com/s/rise?fr=2"
forms = page.forms
login_form = form[3]

#用户邮箱
login_form.fields[0] = "[email]xxx@xxx.com[/email]"
#密码
login_form.fields[1] = "xxxxxxxx"

#登录
page = agent.submit login_form

转载于:https://blog.51cto.com/andyss/100945

使用ruby获取yobo的飙升榜相关推荐

  1. Python下载网易云音乐(云音乐飙升榜)

    最近突然想用python写一个自动下载的工具,于是就先拿网易云来练练手,并把过程中的心得写下来便于后面有想玩这个的童鞋们参考. 首先我们分析网页源码,找到我们想要的获取数据位置: 每一个标签对应着飙升 ...

  2. 【爬虫实战项目】Python爬虫批量下载音乐飙升榜并保存本地(附源码)

    前言 今天给大家介绍的是Python爬虫批量下载音乐飙升榜并保存本地,在这里给需要的小伙伴们代码,并且给出一点小心得. 首先是爬取之前应该尽可能伪装成浏览器而不被识别出来是爬虫,基本的是加请求头,但是 ...

  3. 实战 SQL:亚马逊、京东等电商平台的销售排行榜和飙升榜

    文章目录 示例表和数据 按照产品分类的销售排行榜 按照产品分类的销量飙升榜 总结 大家好,我是只谈技术不剪发的 Tony 老师.不知道你有没有注意过,在亚马逊或者京东等电商平台的网站上都提供了准实时的 ...

  4. 数据可视化matplotlib(一)---亚马逊销售飙升榜

    数据可视化是数据分析的重要任务之一. 之前有获取到亚马逊销售飙升榜的数据,但是排名只是按列表顺序排序,销售排名上升的幅度只有数字的变化,体现的不是很直观. 所以使用python的matplotlib实 ...

  5. Python批量下载网易云音乐飙升榜所有音乐文件

    Python小屋刷题神器最近升级的新功能介绍 推荐教材:<Python程序设计基础与应用>(ISBN:9787111606178),董付国,机械工业出版社,2018.8出版,2021.3第 ...

  6. Ruby 获取 HTTP 回应的编码和内容

    Ruby 获取 HTTP 回应的编码和内容 require 'net/http' response = Net::HTTP.get_response('www.oschina.net, '/code/ ...

  7. 《程序员羊皮卷》荣升当当IT图书飙升榜第一名

    <程序员羊皮卷>三章免费下载版地址:http://download.csdn.net/source/1766653 当当购买地址:http://product.dangdang.com/p ...

  8. python爬取网易云音乐飙升榜音乐_python爬取网易云音乐热歌榜单(获取iframe中数据,src为空)...

    一.分析思路 网易云音乐热歌榜的页面采用嵌入内联框架的方式,若爬虫直接从官网入口进入访问热歌榜 http://music.163.com/#/discover/toplist?id=3778678,是 ...

  9. Python爬取Boss直聘,获取全国Python薪酬榜

    深感抱歉 本来这篇文章应该是在昨天发的,可是电脑出了问题蓝屏了.晚上回来重装了系统,结果还是搞到了现在. 今天想和大家聊聊Python与爬虫 python之所以能迅速风靡全国,和大街小巷各种的培训机构 ...

最新文章

  1. Lync 2010的点击呼叫设置
  2. openstack安装rabbitmq-server消息队列时出现错误
  3. 隐藏apache版本号的方法
  4. JavaScript 面向对象的程序设计1
  5. CF827F-Dirty Arkady‘s Kitchen【堆】
  6. 华南地区最大数据中心上线 阿里云河源数据中心正式开服
  7. 教你怎么蹭网实现和dualwan双倍网速上网
  8. 安装报错_MySQL8.0安装后,报错ERROR 1045 (28000)
  9. python代码读取外部变量_在Python中从外部文件中写入和读取特定的变量
  10. SpringAOP-基于@AspectJ的简单入门
  11. 【数据库原理实验(openGauss)】视图
  12. html设置表格边框样式
  13. 【转载】嵌入式自学经历和体会
  14. gif转为帧(gif分解)加分解图片批量打包下载
  15. 微信小程序分享/转发功能方法
  16. RegExp-2 【正则量词、属性、方法、使用技巧】
  17. JS:中文输入法,日文输入法做最大位数Check的坑maxlength
  18. Dell服务器的iDRAC虚拟控制台无法连接
  19. C++ -- STL文件解析
  20. 计算机的英语怎么拼读,拼音拼读怎么教

热门文章

  1. IAR C语言嵌入汇编问题
  2. 小程序云开发如何不使用它提供的模板
  3. 港科夜闻|海南省教育厅党委书记曹献坤到访香港科大(广州)开展实地调研
  4. linux convert命令
  5. TiUP Cluster
  6. 【在线SPSS】数据分析思维培养系列3:分析思路篇
  7. MBA-day5 逻辑学-假言推理考点
  8. android 判断首字母,Android 汉字转拼音首字母【原创】
  9. Django2.2框架小白项目心得(一)
  10. 算法(63)-二叉树的递归-搜索二叉树-满二叉树-平衡二叉树-