如何使用Nokogiri在云开发环境中抓取数据(Cloud9)
问题描述:
我目前使用Cloud9作为基于云的IDE,但不幸的是,它似乎在Cloud9上运行的东西增加了一层复杂性,我不很明白。如何使用Nokogiri在云开发环境中抓取数据(Cloud9)
例如,下面的代码,尽管被复制并从一个教程粘贴,不会产生在终端的任何输出:
require 'rubygems'
require 'nokogiri'
require 'open-uri'
url = "http://stats.nba.com/player/#!/203096/stats/"
data = Nokogiri::HTML(open(url))
puts data
这导致了两个问题:
- 我是否需要通过类似Heroku的方式部署此代码,才能访问互联网上的URL?或者它只会在本地工作,直到我这样做?
- 确切地说,当我没有公开运行Ruby控制台时,输出应该是什么样的呢?我只是在bash中运行该文件。
答
因为您使用OpenUri来获取网页,这可以在Heroku或任何机器上工作。但是你不需要使用Heroku,因为你已经可以在Cloud9上抓取nba.com了。
你说你正在使用的代码不打印到控制台,但它确实适合我。
这取决于你想用你使用Nokogiri解析的数据。你想将它保存到数据库或文件吗?看看写入文件,而不是使用puts
命令打印到屏幕上。
答
此代码输出到控制台。
首先确保你安装了Nokogiri宝石,并且你有完整的互联网连接。
第二次启动调试。要调试程序,您可以使用像byebug
这样的gem,它可以在运行时为您提供交互式调试器。否则,由于您的代码很短,您可以添加一堆puts "point x"
以实际查看程序停止或中断的位置。
第三要注意你在屏幕上看到的任何错误或警告。
答
是的,你可以做到这一点:
- 转到C9.io和登录
- 单击 “工作区”,然后选择 “自定义模板”
mkdir scrape && cd $_
touch scrape.rb
- 粘贴代码进入scrape.rb
- 运行:
ruby scrape.rb
你走了,一切都应该没问题。
哦哇,我意识到我已经保存了文件,我试图运行这个.ru而不是.rb文件!愚蠢的错误在我的角色。感谢您帮助我弄清楚这一点。 – yoursweater
@yoursweater太棒了,祝你好运。你能重击点))) – 7urkm3n