刮痧推文 - 更好地使用网站或api?

时间:2011-04-20 16:04:08

标签: ruby api twitter screen-scraping

我正在使用twitter gem在Ruby中构建一个Twitter机器人。我试图让它自我可持续发展,所以我希望它通过在社交圈之外抓取用户的推文来生成自己的推文内容(然后可能用马尔可夫链生成器将它们拼凑起来)。

哪一个是更好的策略?

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

另外,我怎样才能确保基本推文来自我的机器人的粉丝朋友以外,所以很难说它是机器人?

目前我使用.yml文件和我手工制作的推文,这远非理想。

2 个答案:

答案 0 :(得分:2)

这里有两个问题。

使用可用的API总是更好。如果一个简单的html元素发生变化,这将为您提供针对机器人随机破坏的未来证明,并且它还允许网站(即推特)对您的搜索进行速率限制,以防您对服务施加过高的负担。虽然推特这不太可能,但这是一个很好的做法。

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

基本上,如果API允许您执行您想要的操作,请将其用于可维护性。

至于你的第二个问题,我对twitter API没有任何经验。有没有办法获取所有关注者的推特ID,以及他们关注的人?如果没有,你将被迫像前面提到的那样 - 如果你确实需要这些信息。

如果您有关注者关注者的列表,您可以查看您要重新发布内容的海报ID是否属于此设置。

你会考虑转发机器人的这方面吗?

答案 1 :(得分:0)

还有一点需要注意的是性能。如果你要抓网站,你必须下载整个页面,然后刮掉页面(这是处理器密集型的)。而不是点击API,它只返回JSON / XML数据。

因此,从严格的性能角度来看,我会选择API。