【问题标题】:Fastest way to crawl Twitter data with Python - Followers' followers使用 Python 抓取 Twitter 数据的最快方法 - 关注者的关注者
【发布时间】:2016-02-04 05:00:06
【问题描述】:

我正在用 Python 研究 Twitter 中的用户社交关系。

问题是“抓取某个用户的关注者信息的关注者最快的方法是什么” 查了很多资料,目前正在使用Tweepy:

c = tweepy.Cursor(api.followers_ids, id=centre, count=5000).items()
    while True:
        try:
            followers_ids_list.append(c.next())
        except tweepy.TweepError:
            # hit rate limit, sleep for 15 minutes
            time.sleep(15 * 60 + 15)
            continue

然后我使用 /users/lookup 根据之前获得的那些 id 来查找 User() 对象。

但是,这种方式很慢...我想知道是否有比我目前正在做的更快的方式。

因为我要查找用户关系,也就是说深度2的关注者是不够的。

假设我有 100 个粉丝,这 100 个粉丝有自己的 200 个粉丝,那么抓取这个社交网络(深度=3)所需的时间是:

(1 + 100 + 100*200)/15 次通话 * 15 分钟 / 60 分钟 = 335 小时 = 大约 14 天!

  • 1 次调用:请求我的关注者 ID (100ids)

  • 100调用:请求100个follower的follower id (100*200ids)

  • 100*200 次调用(至少):请求 100*200(followers'followers) 用户 id。

我可以考虑的替代方法是在没有 api 的情况下抓取 twitter.com 网站(但是,我认为,这种方式会使我的 IP 或帐户被 Twitter 禁止......)

【问题讨论】:

    标签: python twitter web-crawler social-networking tweepy


    【解决方案1】:

    API 限制使您无法更快。

    您可以设置多个应用程序并通过它们分发问题 - 但如果它们都从同一个 IP 地址运行,那么 Twitter 可能会注意到这一点。

    【讨论】:

    • 非常感谢您的快速回答!
    • 目前的 IP 限制是多少?
    【解决方案2】:

    由于 15 分钟的时间速率,您永远无法使用 Twitter API 完成此操作。

    我也在做一些与一位作者的追随者有关的工作。但是,我需要数百万粉丝的名字,这更糟。

    我的解决方案是编写自己的爬虫,它的运行速度确实比 API 快。它每晚可以爬行 100*1000。 (我在本地机器上测试)这个速度低于我的预期,所以我必须考虑其他方法来提高它的速度。 希望能给你一些启发。

    【讨论】:

    • 所以您编写了自己的在 twitter 上运行的 http 爬虫?推特不会阻止你这样做吗?
    • @LetsPlayYahtzee 是的,我在向 Twitter 发送请求之间设置了一个随机睡眠时间。我还尝试了一些免费的 IP 代理,但大多数都不起作用。所以我设置了3台电脑并运行爬虫。挺好的,每台电脑每晚可以提取3000*1000左右。
    • 我尝试使用Http爬虫进行爬取,但也有速率限制。但速率限制不同于 API 限制
    • @Vahid K. 当然,我的方法是在 50 次(你可以测试这个数字)爬行之后给一些随机的睡眠时间。当一个 IP 被阻止时,我也使用不同的 IP 代理。这些技巧可以避免爬取阻塞。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-16
    • 2013-07-01
    • 2021-03-23
    • 2014-07-25
    • 2012-07-20
    • 2017-08-26
    相关资源
    最近更新 更多