使用while循环与nokogiri gem导航到下一页

时间:2015-09-28 07:21:49

标签: ruby-on-rails ruby-on-rails-4 web-scraping nokogiri screen-scraping

以下是我的下一页代码

require 'nokogiri'
require 'open-uri'

doc = Nokogiri::HTML(open("http://www.asklaila.com/search/Pune/-/Electrician/10?searchNearby=false&v=listing"))
 c=  doc.css('.resultTitle').collect {|node| node.text.strip}

while a = doc.at('a.btnNextPre')
   doc = Nokogiri::HTML(open(a[:href]))
    c=  doc.css('.resultTitle').collect {|node| node.text.strip}
end

我想抓取所有页面的数据。但我只收到第一页的数据。我没有得到其他页面的数据。可以有人帮助我吗?提前致谢

1 个答案:

答案 0 :(得分:2)

您的代码并非针对正确的课程。在您的while循环中,您的目标是a.btnNextPre,但是btnNextPre类属于li标记,因此它应该是li.btnNextPre。因此,请尝试更改代码:

require 'nokogiri'
require 'open-uri'

c = []
doc = Nokogiri::HTML(open("http://www.asklaila.com/search/Pune/-/Electrician?searchNearby=false&v=listing"))
 c.push(doc.css('.resultTitle').collect {|node| node.text.strip})

while a = doc.at('li.btnNextPre a')
  doc = Nokogiri::HTML(open(a[:href]))
  c.push(doc.css('.resultTitle').collect {|node| node.text.strip})
end

c