Twitter爬虫速率限制

时间:2020-10-22 08:42:50

标签: python selenium web-scraping twitter

我正在尝试抓取某个帐户的所有“以下”帐户信息(用户名,网站,上次发布日期)。例如https://www.twitter.com/verified/following。 如您所见,它具有365.7K个关注用户名。

我抓取了用户名,现在我必须转到所有链接并抓取该数据。该代码可以正常工作,可以获取所需的所有信息,但是经过一定数量的链接访问后,Twitter表示我超出了速率限制,并且停止显示有关我访问的帐户的任何信息。

def get_user_info(user):
    """Gets User Info - Username, Website, Last Tweet Date"""
    driver.get(user[0])
    sleep(1)
    username = '@' + user[0].split('/')[-1]
    attempt = 0
    while True:
        try:
            website = driver.find_element_by_xpath("//div[@data-testid='UserProfileHeader_Items']/a").get_attribute('href')
        except NoSuchElementException:
            website = 'No Website'
            attempt += 1
            sleep(1)
        try:
            last_tweet_date = driver.find_element_by_xpath("//time").get_attribute('datetime')
        except NoSuchElementException:
            last_tweet_date = 'No Tweets'
            attempt += 1
            sleep(1)
        if website != 'No Website' and last_tweet_date != 'No Tweets':
            break
        if attempt > 1:
            break

    info = (username, website, last_tweet_date)
    return info

def user_info():
    info_list = []
    users_df = pd.read_csv('UserLinks.csv')
    user_list = users_df.values.tolist()
    for user in user_list:
        info = get_user_info(user)
        info_list.append(info)

    info_df = pd.DataFrame(info_list, columns=['Username', 'Website', 'Last Tweet Date'])
    info_df.to_csv('List2.csv', index=False)

您有什么建议?

1 个答案:

答案 0 :(得分:0)

这是我对速率限制类似问题的回答:

How Rate Limit Works in Twitter

本质上,每个API都有一个在特定时间范围内更新的速率限制。例如15分钟。因此,您需要注意速率限制标头或自己进行计数。当您达到速率限制时,请暂停您的应用程序,然后在下一个速率限制窗口重新开始。某些API带有count参数,您需要确保将其设置为max以使每个请求获得最多的响应。此外,如果可用于给定的API调用,则应用程序身份验证通常会比用户身份验证获得更多请求。

相关问题