使用Nokogiri捕获网页 - 需要半持久数据

时间:2012-08-21 00:17:15

标签: ruby-on-rails ruby nokogiri

我有一个可以进行webscraping的模块。我多次使用这种方法,因为它捕获了网页上的所有数据。

def page_as_xml(uri)
  @page_as_xml ||= Nokogiri::HTML(open(uri))
end

由于我将对每个页面使用上述方法少数几次,因此将它保存在实例变量中是有意义的。但是,如何在完成后“清空”实例变量?

所有的网络搜索都以哈希结尾(见下文)。如果我没有“清空”实例变量,那么每个页面将使用相同的page_as_xml数据。

    :page1 =>
      {
        :url => @page1,
        :title => download_title(@page1),
        :meta_tags => download_robots_tags(@page1) 
      },
    :page2 =>
      {
        :url => @page2,
        :title => download_title(@page2),
        :meta_tags => download_robots_tags(@page2) 
      },
    :page3 =>
      {
        :url => @page3,
        :title => download_title(@page3),
        :meta_tags => download_robots_tags(@page3) 
      },

1 个答案:

答案 0 :(得分:1)

如何使它成为哈希:

@pages_as_xml[uri] ||= Nokogiri::HTML(open(uri))

现在您不必担心清空它(除非内存是个问题)。 我真的不明白为什么你需要多次调用它。另外,如果它是html,为什么你称之为page_as_xml?