2011-04-20 47 views
2

我使用twitter gem在Ruby中构建Twitter bot。我试图让它自我可持续,因此我希望它能够通过在用户社交圈之外向用户推送推文来生成自己的内容,然后用马尔科夫链生成器来篡改它们。刮推文 - 更好地使用该网站或API?

哪一个是更好的策略?

  • 通过API搜索鸣叫
  • 加载Twitter的页面和刮鸣叫与HpricotNokogiri

另外,我怎样才能尽量保证基础鸣叫来自我的机器人的追随者的朋友,所以外很难说它是一个机器人吗?

目前我使用.yml文件与手动生成的推文,这是非常不理想的。

+3

所以你希望我们帮你写一个Twitter垃圾邮件机器人。祝你好运。 -1 – 2011-04-20 16:10:42

+1

这比这更复杂一点。我正在为我的最终学位项目编写机器人 - 人际关系研究。为了实验的目的,至少需要一个星期才能确信,发送垃圾邮件的用户不会帮助我。 – ntlk 2011-04-20 22:22:48

+1

我忘了说我明白你的观点。 – ntlk 2011-04-20 22:41:51

回答

2

这里有两个问题。

在可用的地方使用API​​总是更好。如果一个简单的html元素发生了变化,这将防止您的机器人随机破坏,并且它还可以让网站(例如Twitter)限制您的搜索,以防您在服务上承受过高的负担。虽然这对推特来说不太可能,但这是很好的做法。

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

基本上,如果API允许你做你想做的事情,那就用它来维护。

至于你的第二个问题,我没有任何关于twitter API的经验。是否有一种方法可以获得所有追随者的推特ID,以及他们关注的对象?如果没有,你会被迫像前面提到的那样刮 - 如果你确实需要这些信息的话。

一旦你有追随者追随者的列表,你可以检查你想要转发的海报的ID是否属于这个集合。

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

+0

嗨,未来证明是我没有考虑过的一个很好的观点。是的,有一种方法可以获得我所有追随者的ID,因此检查其追随者的ID是可能的,尽管我认为这很耗时。我想避免转发,而是使用推文作为生成新消息的基础。 – ntlk 2011-04-20 22:17:22

+0

是的,我看到你的评论解释了为什么。您应该能够使用散列映射或类似的方法来加速ID查找。 – Diarmaid 2011-04-21 08:06:38

0

还有一点需要注意的是性能。如果你要刮去网站,你将不得不下载整个页面,然后刮去页面(这是处理器密集的)。与击中仅返回JSON/XML数据的API不同。

因此,从严格的性能角度来看,我会使用API​​。

+0

谢谢,非常好的一点,虽然我接受了答案,指出了随着时间的推移可能性的东西。 – ntlk 2011-04-20 22:19:46