2015-06-08 115 views
1

我想刮一個網站,其中有多個頁面的結果,如「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

歡迎堆棧溢出。請提供一個HTML的_minimal_示例,演示您正在嘗試處理的內容。另外,當使用Mechanize時,使用'Nokogiri :: HTML(body)'來獲取HTML的DOM是必須的。 Mechanize已經使用Nokogiri,您可以輕鬆訪問其內部DOM。 –

回答

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