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