Ruby 在分页链接之后进行刮削
我试图刮一个网站,其中有多个页面的结果,如“1,2,3,4,5…”。 每个页码都是指向另一页的链接,我需要刮除每一页。 到目前为止,我得出了以下结论: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)
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。