我有一个可以进行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)
},
答案 0 :(得分:1)
如何使它成为哈希:
@pages_as_xml[uri] ||= Nokogiri::HTML(open(uri))
现在您不必担心清空它(除非内存是个问题)。 我真的不明白为什么你需要多次调用它。另外,如果它是html,为什么你称之为page_as_xml?