无法使用水豚迭代链接的数组



我正在尝试用水豚迭代链接的数组。这是雅虎主页,我正在尝试连续检查左侧栏中的所有链接("邮件","新闻","体育"等)。这是一段html('邮件'):

<a class="ell fz-s " href="http://hsrd.yahoo.com/_ylt=A2KLtiE7CQZVoV8AGBmbvZx4/RV=1/RE=1427668539/RH=aHNyZC55YWhvby5jb20-/RO=2/RU=aHR0cDovL3Nwb3J0cy55YWhvby5jb20v/RS=^ADA0Gc4IcWXarglWyV.UMCa7fh5TLA-"> <i id="nav-sports" class="img-sprite"></i><span>Sports</span></a>

我正在尝试将所有链接元素推送到一个数组,然后访问每个元素:

page.all('.ell.fz-s').each { |el|
    link = el[:href]
    visit(link)
  }

但它仅适用于第一个链接,然后停止。我做错了什么?

你应该按照泰伦·伊斯特的建议存储hrefs。

但是,您不必访问链接,而是访问完整的URL。

links.each do |link|
  visit(url + link)
end

希望它能帮助某人。

对.. 所以问题是在你访问第一个链接之后......您现在位于具有不同链接的不同页面上,因此引用之后的链接只是中断(对旧链接的引用已过时)

您可能需要先提取所有链接 - 然后开始访问它们,例如尝试以下内容:

# pull them out of the page and stuff the actual links away in a separate array
links = page.all('.ell.fz-s').map { |el| el[:href] }
puts links.inspect
links.each do |link|
  visit link
 end

最新更新