在本文中,我们通过编写有趣的棒球击球记录程序程序展示了如何使用这三个 Google Code API。本文的编排以及应用程序代码的灵感均来自 Joseph Adler 的杰作 Baseball Hacks(参见 参考资料)。 我们使用了三个 Google Code API:Google Chart API、Google Spreadsheets Data API 和 Google Gadgets API。我们不打算详尽介绍这些 API,但希望我们的介绍恰到好处,能激起您的兴趣。更详细的内容可以参考 Google 文档和教程。我们的目的是构建一个 Google Gadget 来显示美国棒球联盟球队的最新击球数据。为实现此目的,我们需要以下三个步骤。
首先,从一个棒球网站下载当前的棒球数据并将 这些数据存储于以逗号分隔的文本文件。其次,使用 Google Spreadsheets Data API 将这些数据上传到 Google 电子数据表。第三,编写一个 Google Gadget 来从此电子数据表读取这些数据并利用 Google Chart API 以条形图显示这些数据。
![]() ![]() |
![]()
|
第一步是下载数据。我们的代码基于 Baseball Hacks 中的 “Hack #25: Spider Baseball Sites for Data”。我们在本文中不打算详细介绍它,因为在此书中已有很多的解释。(我们的代码存于 get_all_teams_hitting.pl
Perl 程序和 GetStats.pm
Perl 模块,均包括在本文的 示例代码下载 中)。但有以下几点值得一提。
首 先,虽然针对比赛结果(即积分表)的 RSS 和 Atom 提要有很多,但针对实时的球员积分数据的 RSS 和 Atom 提要好像没有。如果有的话,就需要从这些 Web 提要中获取数据。然而,我们却不得不从 HTML 页面获取数据。这样做不是很好,而且不可靠。比如,如果 HTML 的格式突然变了,代码很容易崩溃。第二点是在没有得到站点主人的同意之前不要从其站点获取数据。请先查看站点的 “使用条款”。第三,如果可以从该站点获取数据,也不要太过分。在连续对页面进行单击的空隙间,请留出一两秒的停顿。这不仅是个礼貌之举,而且,如果不这 么做,您很可能会被拒之站外。(我们进行了测试,没有停顿的代码会遭到拒绝)。
![]() ![]() |
![]()
|
我们或取 HTML 页、下载数据并将其存储在以逗号分隔的各个文本文件中,每个队一个文件,我们希望将这些数据存储在一个 Google 电子数据表中以供 Google Gadget 随后访问。Google Spreadsheets Data API 让您能够按行或按单元格添加、更改和删除 Google 电子数据表的内容。Google Spreadsheet Data API 对 Java™、.NET、PHP 和 Python 都可用。我们使用的是 Python,因为我们更喜欢它。
在 清单 1 中,Python 代码循环遍历这组以逗号分隔的文本文件,然后调用向电子数据表上传数据的代码。(我们还使用了另一个数据文件 MLBTeams.csv
,其中包含了这些球队的列表)。
清单 1. upload_all_teams_hitting.py 的片段
|
以编程的方式与 Google 电子数据表交互的方式有两种:基于行的提要和基于单元格的提要。在这个应用程序中,由于我们通常都只按行删除旧数据并按行添加新数据,所以我们主要使用基于行的提要。
下面是我们使用的 gdata.spreadsheet
方法和字段:
本文转自IBM Developerworks中国