【问题标题】:Scraping tweets - better to use the site or api?抓取推文 - 更好地使用网站或 api?
【发布时间】:2011-04-20 16:04:08
【问题描述】:

我正在使用 twitter gem 在 Ruby 中构建 Twitter 机器人。我正试图让它像以前一样自给自足,所以我希望它通过抓取社交圈外用户的推文来生成自己的推文内容(然后可能用马尔可夫链生成器对它们进行乱码)。

哪个策略更好?

  • 通过 api 搜索推文
  • 加载 Twitter 页面并使用 Hpricot 或 Nokogiri 抓取推文

另外,我如何确保基本推文来自我的机器人追随者的朋友之外,因此更难判断它是机器人?

目前我使用.yml 文件和我手动生成的推文,这远非理想。

【问题讨论】:

  • 所以您希望我们帮助您编写一个 twitter 垃圾邮件机器人。祝你好运。 -1
  • 比这复杂一点。我正在为我的最终学位项目编写一个机器人来研究机器人与人类的关系。出于实验的目的,它至少需要在一周内可信,向用户发送垃圾邮件对我没有帮助。
  • 我忘了说我明白你的意思了。
  • 否定 Rein Henrichs 的 -1。大多数 twitter 垃圾邮件机器人不涉及人工智能。

标签: ruby api twitter screen-scraping


【解决方案1】:

这里有两个问题。

使用可用的 API 总是更好。如果一个简单的 html 元素被更改,这将在未来证明你不会随机破坏机器人,并且它还将允许网站(即 twitter)对你的搜索进行速率限制,以防你对服务施加过高的负载。虽然这对于 twitter 来说不太可能,但这是一种很好的做法。

有时,您需要的信息无法通过 API 获得。在这种情况下,你应该考虑是否真的需要刮,如果需要,如何限制自己礼貌。

基本上,如果 API 允许您做您想做的事,那么就使用它来实现可维护性。

至于你的第二个问题,我对 twitter API 没有任何经验。有没有一种方法可以获取所有关注者的 Twitter ID,以及他们关注的对象?如果没有,您将不得不像前面提到的那样进行抓取——如果您确实需要这些信息。

获得关注者列表后,您可以检查要转发的发布者的 ID 是否属于此集合。

您会考虑转发机器人的这方面的推文吗?

【讨论】:

  • 嗨,面向未来是一个很好的观点,我没有考虑过。是的,有一种方法可以获取我所有追随者的 ID,因此检查他们的追随者的 ID 是可能的,尽管我认为这相当耗时。我想避免转发,而是将推文用作生成新推文的基础。
  • 是的,我看到您的评论解释了原因。您应该能够使用 hashmap 或类似方法加快 ID 查找速度。
【解决方案2】:

还有一点需要注意的是性能。如果要抓取网站,则必须下载整个页面,然后抓取页面(因为它是处理器密集型的)。与访问 API 不同,后者只会返回 JSON/XML 数据。

所以从严格的性能角度来看,我会使用 API。

【讨论】:

  • 谢谢,这是一个很好的观点,尽管我接受了指出随着时间的推移可能会出现问题的答案。
猜你喜欢
  • 2023-03-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-06-18
  • 2020-09-28
  • 2013-05-09
  • 2019-12-15
相关资源
最近更新 更多