我正在尝试抓取某个帐户的所有“以下”帐户信息(用户名,网站,上次发布日期)。例如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)
您有什么建议?
答案 0 :(得分:0)
这是我对速率限制类似问题的回答:
How Rate Limit Works in Twitter
本质上,每个API都有一个在特定时间范围内更新的速率限制。例如15分钟。因此,您需要注意速率限制标头或自己进行计数。当您达到速率限制时,请暂停您的应用程序,然后在下一个速率限制窗口重新开始。某些API带有count参数,您需要确保将其设置为max以使每个请求获得最多的响应。此外,如果可用于给定的API调用,则应用程序身份验证通常会比用户身份验证获得更多请求。