Ruby 爬 ruby-china,为什么浏览器看到的和爬到的不一样?

tinyfeng · August 15, 2018 · Last by tinyfeng replied at August 15, 2018 · 2048 hits
require 'nokogiri'
require 'rest-client'
def print_title url
  begin  
    res = RestClient.get url
    doc = Nokogiri::HTML res.body
    doc.css('.title a').each do |i|
      puts i.attributes['title'].value
    end
    puts '-' * 100
  rescue
    puts "invalid url"
  end
end

puts 'Please input url, and enter "e" to exit.'
while 'e' != url = gets.chomp!
  print_title url
end

比如去爬https://ruby-china.org/topics?page=60,感觉浏览器访问的时候被过滤了一些数据....

爬到的数据应该比浏览器访问的多,导致分页页数大了以后,顶部出现了浏览器访问到的 59 页的东西

ruby-china截图

爬到的数据

因为有新帖子出现把整体向后推了

Reply to zj0713001

同时刷的,并且两边都重试了好几次。

找到了一个示例,这爬的第二页数据,其中topic/38279,浏览器访问的时候不见了

你这个是所有的代码吗,我用你这个运行没反应呀

Reply to CaiAAA

直接在 irb 里输入都能用吧,不过前提你装了那两个 gem,不然会报错

我新手,require 'nokogiri' require 'rest-client' 这部分是怎么写的呀,求大佬分享一下

Reply to CaiAAA

那是两个 gem 包,你在 shell 下安装对应的 gem 包

$ gem install nokogiri
$ gem install rest-client

在 ruby 里 require 对应的 gem,就可以使用对应的包,去看一下https://guides.rubygems.org/what-is-a-gem/

Reply to tinyfeng

安装了 gem,运行后还是一样的,输入 e 退出了。

Reply to CaiAAA

输入 e 是退出,没问题吧

Please input url, and enter "e" to exit.

11 Floor has deleted
Reply to CaiAAA
while 'e' != url = gets.chomp!
  print_title url
end

url 需要你自己输入

Reply to tinyfeng

好的,多谢大佬教导了

Reply to CaiAAA

我也是新手,互相学习。

是不是个人屏蔽了一些用户。

Reply to Rei

还真是,不知道什么时候的误操作,我也没想着登出看看...

tinyfeng closed this topic. 15 Aug 15:14
You need to Sign in before reply, if you don't have an account, please Sign up first.