打印

[问题求助] 怎么才能得到解析的xml文档呢?

怎么才能得到解析的xml文档呢?

#!/usr/bin/ruby
# yahoo-web-search.rb
require 'open-uri'
require 'rexml/document'
require 'cgi'
BASE_URI = 'http://api.search.yahoo.co.jp/WebSearchService/V1/webSearch'
def print_page_titles(term)
 
 term = CGI::escape(term)
 xml = open(BASE_URI + "?appid=saikeina&query=#{term}").read
  document = REXML::Document.new(xml)
 
 
 REXML::XPath.each(document, '/ResultSet/Result/Title/[]') do |title|
  puts title
 end
end
(puts "Usage: #{$0} [search term]"; exit) if ARGV.empty?
print_page_titles(ARGV.join(' '))


我想看到这个程序解析的xml文档,怎么办?请高人指点。
本帖最近评分记录
  • drive2me R币 +2 鼓励提问题。 2008-3-11 20:39
尽快学会ruby!!

TOP

xml = open(BASE_URI + "?appid=saikeina&query=#{term}").read
这一句里面的xml不就是抓取的页面
document = REXML::Document.new(xml)
这一句里面的document不就是解析出来的DOM对象树

TOP

嗯,知道了,谢谢。
还有些不明白,下面这句话中,等号后面那个式子是什么意思啊?
term = CGI::escape(term)

有没有比较好的ruby的书,介绍给我吧,要中文的,最好是在线的,或是电子的,因为我买书有点儿不方便,拜托!

[ 本帖最后由 nana 于 2008-3-12 11:30 编辑 ]
尽快学会ruby!!

TOP

CGI是一个底层库,作很多底层的事情,比如string的escape,unescape,整个rails的基础架构都是跑在CGI上面的
你的代码不知道哪里来得,不过如果是我,我就直接用比较高级一点的库来抓html
比如这个库"net/http"
http://stdlib.rubyonrails.org/li ... asses/Net/HTTP.html
这里的例子足够用了,且将CGI封装的很好,得到目标的返回信息后,用Hpricot解析一下response.body就行了

[ 本帖最后由 lgn21st 于 2008-3-12 12:22 编辑 ]
本帖最近评分记录
  • nana R币 +1 收到,谢谢! 2008-3-12 13:05

TOP

(puts "Usage: #{$0} [search term]"; exit) if ARGV.empty?
print_page_titles(ARGV.join(' '))

上面句子中“ARGV”是什么意思?我看在好多地方都会用到……
尽快学会ruby!!

TOP

ARGV是外部命令行参数,是个数组

TOP

2008-11-23 22:05 Crawled by CCBot/1.0 (+http://www.commoncrawl.org/bot.html) @38.103.63.61