0

首先,我想获得我 Twitter 帐户的所有关注者。我做了一些研究,发现我们可以使用 Ruby on rails 进行网页抓取:Nokogiri 或 Mechanize gems。我还有一个用于网络抓取的 CSS 选择器。现在,如果我查找 HTML 页面源代码,它不会显示该帐户的所有关注者。

我真的可以使用网络抓取代码来获取我所有的 Twitter 关注者,还是应该使用 Twitter API?

4

2 回答 2

6

一般而言,尽可能绝对使用 API。

顾名思义,“抓取”只是处理应用程序的“表面”,在 MVC 术语中是它的 (HTML) 视图。这些观点随时可能发生变化——想想推特和其他类似服务有多少次进行网站重新设计。如果您正在抓取,那么每个站点的重新设计,即使是较小的,很可能会破坏您现有的代码,迫使您(没有警告)根据猜测进行疯狂的更新。

Nokogiri 和 Mechanize 是强大的工具,但它们永远无法与 API 的功能、稳定性和一致性相比,后者直接访问数据库内容,完全绕过不断变化的“表面”。在 Twitter 的情况下,您可以获得 API 包装器的额外好处,例如用于访问 API 的Twitter gem,它为 API 添加了一个用户友好的层,使其更容易集成到您的应用程序中。

所以总结一下:使用 API,可能通过 API 包装器,例如 Twitter gem。

于 2012-11-08T00:09:22.797 回答
4

当服务不提供 API 或 API 不能充分提供您需要的所有功能时,Web 抓取通常是最后的手段。

我会先研究API。这就是它的设计目的。

网页抓取可能会出现问题,因为网站的结构可能会发生巨大变化并破坏您的代码运行。

通常,公共 API 往往具有某种约定,不会对所提供的数据进行重大更改。如果有更改,API 将提供 API 的版本控制(调用旧版本 API 的能力)或提供有关更改内容和更改时间的信息的文档。

此外,网络抓取还有其他成本,例如额外的带宽。从 API 获得的数据通常在应用程序中更有用。

还有很多库(ruby gems),它们将提供访问所需 API 所需的许多基本功能。当 API 更新时,它们通常也会更新。

于 2012-11-08T00:02:49.493 回答