---
title: "深入挖掘Twitter API：iPhone 4S 与 Galaxy Nexus 的对比"
date: "2011-11-08"
categories: 
  - "applications"
  - "json"
tags: 
  - "api"
  - "data-integration"
  - "mapforce"
  - "twitter"
  - "xmlspy"
description: 本文探讨了如何利用Twitter搜索API和MapForce进行数据集成，重点比较了围绕iPhone 4S和Galaxy Nexus的用户互动情况。
---
Status: #blog

Tags:  #api #data-integration #mapforce #twitter #xmlspy

Categories: [development](/blog/zh/category/development.md) | [json](/blog/zh/category/json.md)
# 深入挖掘Twitter API：iPhone 4S 与 Galaxy Nexus 的对比

我们通过使用Twitter搜索API，深入研究了iPhone 4S与Galaxy Nexus之间的对比，并发现了一些有趣的数据。在当今世界，互联网上存在着海量的数据，这些数据可以用于研究、市场分析和竞争情报。虽然“...”[大数据](http://en.wikipedia.org/wiki/Big_data)“对于那些负责生成、存储和整理这些数据的人来说，这可能会带来一些问题。但对于我们这些正在寻找答案的人来说，这些数据非常有价值。 幸运的是，其中一部分数据可以通过在线查询获取，尤其是在社交媒体互动方面，存在着海量的数据。

[![推文查询、搜索API](https://lh3.ggpht.com/-Cab7QZbaVg4/TrgSS1AfiJI/AAAAAAAAAjw/Ockh69Y5Cgg/TweetsQueryingSearchAPI_thumb2.png?imgmax=800 "TweetsQueryingSearchAPI")](http://lh3.ggpht.com/-8qNuzrNkmrA/TrgSSHXaZiI/AAAAAAAAAjo/yKOA1PpWct0/s1600-h/TweetsQueryingSearchAPI4.png)

本文将探讨如何使用来自[MapForce](https://www.altova.com/zh/mapforce.html "Graphical data mapping, conversion, and integration tool")的[Twitter 搜索 API](https://dev.twitter.com/docs/api/1/get/search)，该API是[Altova](https://www.altova.com/zh/)的数据映射/转换/集成工具，来收集关于近期用户发布的“推文”的数据，这些推文主要围绕两个热门话题：苹果的“iPhone 4S”与三星的“Galaxy Nexus”，后者是最新款的Android手机。我们将提取一些关于参与这些讨论的用户的统计数据。我们今天可以利用的大量数据的一个好处是，我们可以以有趣的方式查询这些数据，并从中提取新的信息。 

虽然目前已经存在许多服务，它们可以提供关于Twitter话题的趋势信息（例如，[Trendistic](http://trendistic.indextank.com/)），但这些服务提供的趋势信息非常简单，无法进行更深入的查询。然而，所有底层数据都可以获取，只要您愿意学习一些关于Web服务API的知识，以及如何使用它们来提取XML数据，以便进行进一步的处理。 首先，我们可以使用 [Twitter 搜索 API](https://dev.twitter.com/docs/api/1/get/search)，查询最近发布的推文，获取关于“Galaxy Nexus”的最后 100 条推文。 当然。请提供您需要翻译的英文文本 [Twitter 搜索使用指南](https://dev.twitter.com/docs/using-search) 它告诉我们，在搜索查询中使用这两个词语，将会使用默认的逻辑运算符，即“与”（AND），因此我们将搜索包含“Galaxy AND Nexus”的帖子。 那么，我们来尝试一下，并请求获取最近的100条数据：

> [http://search.twitter.com/search.atom?q=galaxy+nexus&rpp=100](http://search.twitter.com/search.atom?q=galaxy+nexus&rpp=100 "http://search.twitter.com/search.atom?q=galaxy+nexus&rpp=100")

如果您点击此链接，将会打开一个新窗口，其中包含大量原始的 XML 数据，这些数据按照 [Atom 聚合格式](http://tools.ietf.org/html/rfc4287) 的规范进行格式化。 另一种选择是请求以 JSON 格式获取数据，这样您就可以直接使用 JavaScript 代码进行处理，但我们将使用基于 XML 的 Atom 格式，以便我们能够轻松分析数据并提取所需的信息。 在浏览器中查看上述搜索结果并不太方便，因此我们可以使用“从 URL 打开”功能，在您喜欢的 [XML 编辑器](https://www.altova.com/zh/xml-editor/ "XMLSpy") 中快速查看 XML 数据：

[![推文 | AtomGrid](https://lh6.ggpht.com/-j_x9YEef4Nk/TrgSTxoCftI/AAAAAAAAAkA/MfdgGZdg8kQ/TweetsAtomGrid_thumb%25255B5%25255D.png?imgmax=800 "TweetsAtomGrid")](http://lh3.ggpht.com/-5JEh5K9QkQs/TrgSTOLGHVI/AAAAAAAAAj4/7HnKXnkUMq0/s1600-h/TweetsAtomGrid%25255B7%25255D.png)

正如您所看到的，每个条目的数据都包含一个语言代码。因此，在这个例子中，我们将从这个 Twitter 动态以及关于“iPhone 4S”的第二个搜索结果中提取数据，并将它们合并到一个中间 XML 文件中，以便进行进一步的分析。在 MapForce 中提取 XML 数据非常简单：使用“插入 XML 文件”选项，将 XML 数据源导入，我们可以再次指定与之前相同的 URL。如果需要，MapForce 会自动为提供的这些数据创建一个 XML 模式，这样我们就可以对其进行可视化，并从中提取信息

[![推文原子映射](https://lh6.ggpht.com/-6tRtunjeJ0Y/TrgSVGR1rLI/AAAAAAAAAkQ/bhHGOwhwRYA/TweetAtomMapping_thumb%25255B6%25255D.png?imgmax=800 "TweetAtomMapping")](http://lh5.ggpht.com/-bzAvR6n32VQ/TrgSUiI-bzI/AAAAAAAAAkI/ma5mLdoy15k/s1600-h/TweetAtomMapping%25255B10%25255D.png)

在我们的映射配置中，我们左侧添加了两个数据源：一个使用查询字符串搜索“Galaxy Nexus”，另一个搜索“iPhone 4S”。右侧，我们添加了一个简单的XML Schema，这将使我们能够聚合数据并更方便地进行分析。在这种情况下，两侧之间的映射关系非常简单，因为我们只提取关于用户、日期和推文语言的基本信息。但在其他应用中，映射关系可能会更复杂，可能包括函数以及对其他数据源、数据库或Web服务的查询……我们可以直接在MapForce中使用输出选项卡预览生成的XML数据，以下是我们数据转换的结果：

[![推文原始数据](https://lh4.ggpht.com/-BQ62-NjNL5Q/TrgSWVUyE5I/AAAAAAAAAkg/9oR4YXUNafc/TweetsRawData_thumb%25255B2%25255D.png?imgmax=800 "TweetsRawData")](http://lh3.ggpht.com/-YGWVjhMgmTU/TrgSV3kX6mI/AAAAAAAAAkY/RXuP_H0jqoA/s1600-h/TweetsRawData%25255B4%25255D.png)

现在，我们可以轻松利用 [StyleVision](https://www.altova.com/zh/stylevision.html "Visual Stylesheet & Report Design Tool") 的报表功能，按照每个主题中的语言对这些数据进行分组，并统计每种语言下的帖子数量。然后，我们可以将这些数据以饼图的形式呈现，从而得出以下有趣的结论：

[![按语言分类的推文](https://lh6.ggpht.com/-CAyiEDCNE0A/TriSqgg_ZiI/AAAAAAAAAlI/Q-cLs4zPnOU/TweetsByLanguage_thumb%25255B2%25255D.png?imgmax=800 "TweetsByLanguage")](http://lh4.ggpht.com/-xxyo-qtikjg/TriSqmyxrCI/AAAAAAAAAlA/PVPZqtvAst0/s1600-h/TweetsByLanguage%25255B5%25255D.png)

显然，这些数据在很大程度上取决于执行日期、时间以及与这些产品相关的具体公告，因此数字可能会有很大波动。但它可以作为一种很好的监控工具，用于观察不同语言的趋势。一旦设置完成，只需点击一个按钮，就可以轻松刷新报告，获取当时的数据快照。对于更长期的分析，当然需要稍微修改一下数据映射，以便查询超过100条的最新推文。在本文中，我们以Twitter的搜索API作为示例数据源，并且只关注了语言这一独特的数据点，但今天网络上还有许多其他有趣的数据来源，并且可以使用类似的方法来处理它们。如果您想尝试其他数据来源以及您想要提取的其他类型的信息，我们邀请您亲自尝试。 

A [MapForce 提供 30 天免费试用版本](https://www.altova.com/zh/download-mapforce.html), 并且，您可以使用它没有任何限制 [Altova的数据映射和转换工具的其他功能](https://www.altova.com/zh/mapforce.html) 用于处理超出分析社交媒体趋势的各种数据任务……
