如何正确使用Scrubty从XML输出的内容中获取URL

时间:2010-09-06 22:54:57

标签: ruby xml web-scraping scrubyt

我绝不是Ruby的主人,而且对Scrubyt来说还是个新手。我只是尝试在wiki页面上找到的一些例子。我正在研究的例子是当你搜索'ruby'时获取谷歌返回的搜索结果,并且我想要抓住每个结果的URL,这样我就可以继续获取该页面。问题是我不知道如何适当地获取URL。这是我的以下代码:

require 'rubygems'
require 'scrubyt'

google_data = Scrubyt::Extractor.define do
  fetch 'http://www.google.com/ncr'
  fill_textfield 'q','ruby'
  submit

  link_title "//a[@class='l']", :write_text => true do
    link_url
  end
end

google_data.to_xml.write($stdout, 1);

代码打印出适当的XML数据(名称和链接),但是如何在没有添加<link_url>标签的情况下检索链接(我试图打印出link_url,我注意到了标签)也打印出来)。我可以做一些像fetch link_url这样简单的事情,还是有办法从link_url中保存的xml内容中提取文字?

这是google_data.to_xml.write()

打印的部分内容
<root>
  <link_title>
    Ruby Programming Language
    <link_url>http://ruby-lang.org/</link_url>
  </link_title>
  <link_title>
    Download Ruby
    <link_url>http://www.ruby-lang.org/en/downloads/</link_url>
  </link_title>
  <link_title>
    Ruby - The Inspirational Weight Loss Journey on the Style Network ...
    <link_url>http://www.mystyle.com/mystyle/shows/ruby/index.jsp</link_url>
  </link_title>
  <link_title>
    Ruby (programming language) - Wikipedia, the free encyclopedia
    <link_url>http://en.wikipedia.org/wiki/Ruby_(programming_language)</link_url>
  </link_title>
</root>

1 个答案:

答案 0 :(得分:0)

我会考虑其他选择。 Scrubyt暂时没有更新,论坛已经关闭。

Mechanize可以执行Extractor所做的事情,Nokogiri可以解析XML或HTML响应,而Builder可以创建XML(虽然看起来你真的不想要XML)。