如何使用Nokogiri在云开发环境中抓取数据(Cloud9)

时间:2016-03-04 23:24:14

标签: ruby-on-rails ruby nokogiri cloud9-ide

我目前正在使用Cloud9作为基于云的IDE,但不幸的是,在Cloud9上运行似乎增加了一层我不太了解的复杂性。

例如,以下代码尽管从教程中复制并粘贴,但不会在终端中生成任何输出:

require 'rubygems'
require 'nokogiri'
require 'open-uri'

url = "http://stats.nba.com/player/#!/203096/stats/"
data = Nokogiri::HTML(open(url))
puts data

这导致两个问题:

  1. 我是否需要通过Heroku之类的代码部署此代码,然后才能访问互联网上的网址?或者它只会在本地工作,直到我这样做?
  2. 确切地说,当我没有公开运行Ruby控制台时,输出应该是什么?我只是在bash中运行该文件。

3 个答案:

答案 0 :(得分:2)

是的,你可以这样做:

  1. 转到C9.io并登录
  2. 点击"工作区"并选择"自定义模板"
  3. mkdir scrape && cd $_
  4. touch scrape.rb
  5. 将代码粘贴到scrape.rb
  6. 运行:ruby scrape.rb
  7. 你去,一切都应该没问题。

答案 1 :(得分:1)

因为您使用OpenUri来获取网页,所以这适用于Heroku或任何计算机。但是你不需要使用Heroku,因为你已经能够在Cloud9上抓取nba.com。

你说你正在使用的代码没有打印到控制台,但它确实适用于我。

这取决于你想用你使用Nokogiri解析的数据。要将其保存到数据库或文件中吗?查看编写文件而不是使用puts命令打印到屏幕上。

答案 2 :(得分:0)

此代码输出到控制台。

首先确保您安装了Nokogiri gem,并且您拥有完整的Internet连接。

第二次开始调试。要调试程序,您可以使用像byebug这样的gem,它在运行时为您提供交互式调试器。否则,由于您的代码很短,您可以添加一堆puts "point x"来实际查看程序停止或中断的位置。

第三,注意您在屏幕上看到的任何错误或警告。