使用Nokogiri或其他ruby工具从jsp web获取数据?

时间:2010-04-21 05:12:52

标签: ruby

有一个jsp网站: http://xbrl.cninfo.com.cn/XBRL/allinfo.jsp?stkid=000002&getyear=2005&nowpage=Info.jsp&reportType=GB0110 我可以用Nokogiri或其他红宝石工具从中废弃数据吗?

2 个答案:

答案 0 :(得分:0)

基本上是的,如果网站所有者允许你这样做。

但看起来数据类似于

...
arrallvalues[18].addValuesbyfisId('0.842');
arrallvalues[19].addYearsbyfisId('2005年');
arrallvalues[19].addYearsbyfisId('2006年');
arrallvalues[19].addYearsbyfisId('2007年');
arrallvalues[19].addYearsbyfisId('2008年');
arrallvalues[19].addYearsbyfisId('2009年');
arrallvalues[19].addValuesbyfisId('21992392061.30');
arrallvalues[19].addValuesbyfisId('49919840381.13');
arrallvalues[19].addValuesbyfisId('100094467908.29');
arrallvalues[19].addValuesbyfisId('119236579721.09');
arrallvalues[19].addValuesbyfisId('137608554829.39');
arrallvalues[20].addYearsbyfisId('2005年');
arrallvalues[20].addYearsbyfisId('2006年');
arrallvalues[20].addYearsbyfisId('2007年');
arrallvalues[20].addYearsbyfisId('2008年');
...

所以,我怀疑,你最终会把分析器写成你自己。

答案 1 :(得分:0)

即使问题值得投票,我认为没有必要自己编写分析器,因为有JavaScript。我自己编写了scrappers,数据在Javascript中。 Ruby有库来评估js(spidermonkey,johnson)。像这样的东西,但这会使js解释器崩溃,没有调查原因,但我会猜测中文语言

require 'rubygems'
require 'nokogiri'
require 'johnson'
require 'open-uri'

base_url = 'http://xbrl.cninfo.com.cn/XBRL'
page_url = base_url + '/allinfo.jsp?stkid=000002&getyear=2005&nowpage=Info.jsp&reportType=GB0110'

doc = Nokogiri::HTML(open(page_url))

doc.xpath("html/head/script").each do |el|
  src = el.attributes['src']
  if not src.text.empty?
    # load remote js
    Johnson.evaluate(open(base_url + '/' + src).read)
  else
    Johnson.evaluate(el.text)
  end
end

puts Johnson.evaluate("arrallvalues[0]")