Ruby 在分页链接之后进行刮削

Ruby 在分页链接之后进行刮削,ruby,web-scraping,nokogiri,mechanize,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)

我试图刮一个网站,其中有多个页面的结果,如“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
但这永远不会抹掉最后一页


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

问题是在最后一页上没有指向下一页的链接。因此,while语句上的条件的计算结果为
nil
,因此while的主体不会被执行

正如建议的那样,您将需要以下内容:

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

欢迎来到堆栈溢出。请提供一个简单的HTML示例,演示您试图处理的内容。另外,在使用Mechanize时,不需要使用
Nokogiri::HTML(body)
来获得HTML的DOM。Mechanize已经使用了Nokogiri,您可以轻松访问其内部DOM。