如何在Python中更快地使用Twitter API收集推文?

5 投票
3 回答
6028 浏览
提问于 2025-04-16 07:28

我正在做一个研究项目,使用Python-Twitter来收集推文。不过,当我在一台电脑上连续运行这个程序一周时,发现每周只能收集到大约20MB的数据。我只在一台机器上运行这个程序,以避免重复收集到相同的推文。

我们的程序每60秒就会循环调用一次getPublicTimeline()。我尝试通过对一些出现在公共时间线上的用户调用getUserTimeline()来提高效率。然而,这样做让我每次都被禁止收集推文,大约半个小时才能恢复。即使没有被禁止,添加这段代码后,收集速度似乎也没有明显提高。

我知道Twitter有一个“白名单”机制,可以让用户每小时提交更多请求。我大约三周前申请了这个,但到现在还没有收到回复,所以我在寻找其他方法,希望能更有效地收集推文,而不超过标准的请求限制。有没有人知道更快的方式来收集Twitter上的公共推文?我们希望每周能收集到大约100MB的数据。

谢谢。

3 个回答

1

这里有一个来自ars technica的不错的教程,教你如何在Python中使用流式API,可能会对你有帮助。

另外,你也可以尝试通过cURL来实现这个功能。

.

1

我做过一个类似的项目,分析推特上的数据。如果你只是想从数据收集和分析的角度入手,你可以去一些比较好的网站抓取这些推文。这些网站有很多是允许你通过话题标签(也就是#后面跟的词)来搜索的,只要你找一个热门的话题标签,就能得到成千上万的结果。我就是抓取了几个这样的热门话题标签的网站,把这些结果整理成一个大列表,然后用这个列表去查询网站,抓取所有有用的信息。有些网站还允许你直接导出数据,这样就更简单了。你可能会得到很多无用的结果,比如垃圾信息、外语内容等等,所以你可能需要过滤一下,但这对我们的项目来说是最快的方法。推特可能不会给你特别的权限,所以我建议不要指望这一点。

5

你可以试试使用流式API。这个工具就是为了处理这种情况而设计的。通过流式API,你可以轻松获取大量的推文,甚至是几兆字节的数据。不过,要注意的是,如果没有Twitter的授权,你还是无法访问所有的推文,或者获取到一个有代表性的样本。

撰写回答