用水豚提取网址

时间:2016-11-05 15:37:28

标签: ruby capybara

我有一个包含多个学生姓名条目的页面,每个学生都有一个通向他的图表的网址。 html看起来像这样:

<div class="student_name">
  <a target="_blank" data-tn-element="grade-result-link[]" data-tn-link 
   href="/johndoe/b89db3308ddaaed2?sp=0" rel="nofollow" class="student_link"
   itemprop="url">John Doe</a>  
   <span class="graduated"> - Graduated 2013</span>
</div>

我想创建一个列表,其中只包含页面上每个学生的网址,但我最终得到的是学生的姓名。我在webkit中使用了capybara,我的代码类似于:

results =  page.all('div.student_name').map do |item|
   puts(item.text)
end

我该怎么说这个,所以我只能在href中提取嵌入的(相对)网址?

1 个答案:

答案 0 :(得分:2)

urls = page.all('div.student_name a', minimum: 1).map do |link]
  link[:href]
end

应该给你的网址。 minimum:1只会使all等待,直到页面上至少有一个实例,并且在您的特定实例中可能不需要。根据您使用的驱动程序,它们可能是完全标准化的网址,但如果您真的需要亲属,则从域中剥离它们并不难。