用水豚提取 url

Extracting url with capybara

我有一个包含多个学生姓名条目的页面,每个学生都有一个 url 指向他的图表。 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>

我想创建一个仅包含页面上每个学生的 url 的列表,但我最终得到的只是学生的姓名。我将水豚与 webkit 一起使用,我的代码类似于:

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

我该如何表达才能只提取 href 中嵌入的(相对的)url?

埃德

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

应该给你网址。 minimum:1 只会让 all 等到至少一个实例出现在页面上,并且在您的特定实例中可能不需要。根据您使用的驱动程序,它们可能是完全规范化的 URL,但如果您确实需要 relative,则剥离它们的域并不难。