清单 2. 结合使用 CrunchBase REST API 和 JSON 解析 (api.rb)
#!/usr/bin/env ruby
require 'rubygems'
require 'json'
require 'net/http'
# Define the URL with the argument passed by the user
uri = "http://api.crunchbase.com/v/1/company/#{ARGV[0]}.js"
# Perform the HTTP GET request, and return the response
resp = Net::HTTP.get_response(URI.parse(uri))
# Parse the JSON from the response body
jresp = JSON.parse(resp.body)
# Emit the content of interest
puts jresp['number_of_employees']
在清单 2 中,您定义了一个 URL(公司名称作为脚本参数传入)。然后使用 HTTP 类发出一个 GET 请求并返回响应。响应被解析为一个 JSON 对象,您可通过一个 Ruby 数据结构引用感兴趣的数据项。
清单 3 中的控制台会话显示了运行 清单 1 中的抓取脚本和 清单 2 中基于 API 的脚本的结果。
清单 3. 演示抓取和 API 方法
$ ./parse.rb ibm 388,000 $ ./api.rb ibm 388000 $ ./parse.rb cisco 63,000 $ ./api.rb cisco 63000 $ ./parse.rb paypal 300,000 $ ./api.rb paypal 300000 $
抓取脚本运行时,您接收一个格式化的计数,而 API 脚本会生成一个原始整数。如清单 3 所示,您可推广每种脚本的使用,从 CrunchBase 跟踪的其他公司请求获得员工数。每种方法提供的 URL 的一般结构使这种通用性成为可能。
那么,我们使用 API 方法能获得什么?对于抓取,您需要分析 HTML 以理解它的结构并识别要提取的数据。然后使用 Nokogiri 解析 HTML 并获取感兴趣的数据就会很简单。但是,如果 HTML 文档的结构发生变化,您可能需要修改脚本才能正确解析新结构。根据 API 契约,API 方法不存在该问题。API 方法的另一个重要优点是,您可访问通过接口(通过返回的 JSON 对象)公开的所有数据。通过 HTML 公开且可供人使用的 CrunchBase 数据要少得多。
现在看看如何使用其他一些 API 从 Internet 提取各类信息,同样要借助 Ruby 脚本。首先看看如何从一个社交网络站点收集个人数据。然后将看到如何通过其他 API 来源查找更少的个人数据。
通过 LinkedIn 提取个人数据
LinkedIn 是一个面向专业职业的社交网络网站。它对联系其他开发人员,寻找工作,研究一家公司,或者加入一个群组,就有趣的主题进行协作很有用。LinkedIn 还整合了一个推荐引擎,可根据您的概要文件推荐工作和公司。
LinkedIn 用户可访问该站点的 REST 和 JavaScript API,从而获取可通过其人类可读网站访问的信息:联系信息、社交分享流、内容群组、通信(消息和联系邀请),以及公司和工作信息。
要使用 LinkedIn API,您必须注册您的应用程序。注册后会获得一个 API 密钥和秘密秘钥,以及一个用户令牌和秘密秘钥。LinkedIn 使用 OAuth 协议进行身份验证。










