2011-12-12 41 views
0

这是我的问题:我被要求开发一个脚本,用于获取某个艺术家在Q102的Jingle Ball页面上投票的百分比,解析该投票并推送当前百分比,以及艺术家的姓名。推文的API是在AppleScript中完成的,它已经发布了一个我传递给它的自定义字符串。我现在唯一需要的是获取值来构建字符串。现在如何使用curl在Javascript中提交投票并获得结果?

,我试图做一个简单的卷曲像这样通过终端:

curl http://www.q102.com/pages/jb-brackets/ 

的问题是,在任何民意调查,它甚至没有获得输入类型,当我蜷缩(他们单选按钮如果你访问这个页面并尝试投票),那么当我蜷缩它时,它只是为一位艺术家显示这一点(每次投票都有一个特定的ID--这是包含我需要获得的数据的投票)。

<tr> 
    <td rowspan="3" class="poll-left"><p><b>Demi Lovato vs. <br> 
     Avril Lavigne</b></p> 

<div id="start_poll_203988"></div> 
<div id="poll_203988"></div> 
<div id="stop_poll_203988"> 
<script language="javascript"> 
//<![CDATA[ 
insertPoll2('203988'); 


//]]> 
</script> 

当你投票给某个艺术家,然后按“投票”,就说明你的选票当前百分比,像这样:

黛咪洛瓦托与 艾薇儿

黛咪洛瓦托 49.88%

艾薇儿 50.12%

我需要做的是什么提交投票并获得价值,因为统计信息仅在我提交投票后(在主页上)显示。投票后页面不刷新。基本上,我所需要的全部是'49.88%'和'50.12%'(显然这些数据各不相同)。

有没有办法用curl /别的办法来做到这一点?

+0

http://stackoverflow.com/a/8304040/991805。否则,因为您需要模拟JS,您需要自动化Web浏览器并从那里获取信息。 (我可以很容易地写在Ruby中)... –

+0

Kassym Dorsel,唯一的问题是我不知道Ruby的两件事... – swiftcode

+0

我可以发布Ruby代码吗?它使用Watir-Webdriver来控制Firefox来获取信息。 –

回答

1

既然你正在使用JavaScript,你有两种选择。分析JS以查看它在做什么,然后手动发送这些请求,或者您需要控制支持JS的应用程序 - 一个Web浏览器。

看看这里的第一个选项信息:https://stackoverflow.com/a/8304040/991805

至于第二个,因为我知道,我是能够得到它使用Firefox的红宝石控制工作。

require 'rubygems' 
require 'watir-webdriver' 
require 'nokogiri' 

browser = Watir::Browser.new 
browser.goto('http://www.q102.com/pages/jb-brackets/') 
browser.radios[-1].focus 

(browser.radios.length/2).times do |i| 
    browser.radios[1].set 
    browser.buttons[1].click 
    browser.radios[0].focus 
    sleep 0.5 
end 

temp = [] 
source = Nokogiri::HTML(browser.html) 
source.css('.brackets tbody tr td div tbody table tbody tr td').each {|a| temp << a.text.strip!} 

browser.close 
puts temp 

这将输出:

Big Time Rush 
55.15 % 
Flo Rida 
44.85 % 
Lady GaGa 
44.22 % 
Kelly Clarkson 
55.78 % 
Demi Lovato 
50.19 % 
Avril Lavigne 
49.81 % 
Justin Bieber 
48.26 % 
Train 
51.74 % 
David Archuleta 
45.92 % 
Jordin Sparks 
54.08 % 
Adam Lambert 
53.56 % 
Pitbull 
46.44 % 
Joe Jonas 
54.16 % 
All Time Low 
45.84 % 
Selena Gomez 
50.37 % 
Katy Perry 
49.63 % 

此脚本适用于Mac和需要以下两个宝石(库)来运行:的Watir-的webdriver和Nokogori。和Firefox一样。

检查红宝石安装ruby -v 检查宝石安装gem -v 安装库gem install watir-webdriver nokogiri 运行脚本ruby ratings.rb

相关问题