1

ウェブスクレイピングを行うモジュールがあります。この方法は、Webページ上のすべてのデータをキャプチャするため、何度も使用します。

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 に答える