我有一个包含多个学生姓名条目的页面,每个学生都有一个通向他的图表的网址。 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中提取嵌入的(相对)网址?
版
答案 0 :(得分:2)
urls = page.all('div.student_name a', minimum: 1).map do |link]
link[:href]
end
应该给你的网址。 minimum:1
只会使all
等待,直到页面上至少有一个实例,并且在您的特定实例中可能不需要。根据您使用的驱动程序,它们可能是完全标准化的网址,但如果您真的需要亲属,则从域中剥离它们并不难。