1

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

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

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

所有的 webcsraping 都以散列结束(见下文)。如果我不“清空”实例变量,那么每个页面都将使用相同的 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) 
      },
4

1 回答 1

1

如何使它成为一个哈希:

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

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

于 2012-08-21T00:34:07.030 回答