按照分页链接进行刮擦

时间:2015-06-08 04:00:27

标签: ruby web-scraping nokogiri mechanize

我正在尝试抓取一个网页,其中包含多个页面结果,例如" 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

但这绝不会废弃最后一页。

请帮助我编写更好的代码来填写最后一页。

1 个答案:

答案 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