我正在尝试抓取一个网页,其中包含多个页面结果,例如" 1,2,3,4,5 ..."。 每个分页编号都是指向另一个页面的链接,我需要抓取每一页。 到目前为止,我想出了这个:
while lien = page.link_with(:text=> link_number.to_s)
link_number = link_number + 1
body = page.body
html_body = Nokogiri::HTML(body)
html_body.css('#personne tbody tr').each do |person|
puts person.css('td').first.text.to_s
end
page = lien.click
end
但这绝不会废弃最后一页。
请帮助我编写更好的代码来填写最后一页。
答案 0 :(得分:1)
问题是在最后一页上没有指向下一页的链接。因此,while语句的条件求值为nil
,因此while的主体不会被执行。
根据建议here,你需要这样的东西:
loop do
lien = page.link_with(:text=> link_number.to_s)
link_number = link_number + 1
page.parser.css('#personne tbody tr').each do |person|
puts person.css('td').first.text.to_s
end
break unless lien
page = lien.click
end