【发布时间】:2021-02-08 22:19:26
【问题描述】:
我可以从i.instagram.com/api/v1/users/${account}/info 获取用户数据,但我只是想知道是否可以使用 API 获取关注者数量超过 100 万的用户。
因为现在如果我想这样做,唯一的方法是获取许多用户,然后按他们的关注者数量过滤他们。由于有 API 速率限制,所以这不是一个好方法。
【问题讨论】:
我可以从i.instagram.com/api/v1/users/${account}/info 获取用户数据,但我只是想知道是否可以使用 API 获取关注者数量超过 100 万的用户。
因为现在如果我想这样做,唯一的方法是获取许多用户,然后按他们的关注者数量过滤他们。由于有 API 速率限制,所以这不是一个好方法。
【问题讨论】:
我认为这不可能通过任何官方 Instagram 端点实现。您可以尝试像这样的 3rd 方 API:https://socialblade.com/business-api 或者可能为此页面编写爬虫 https://socialblade.com/instagram/top/100/followers 以获取前 100 名用户。
这些是当前 Instagram API 的官方文档页面:
编辑:
这是一个脚本,它将为您提供一个 Pandas DataFrame,其中包含来自 trackalytics 的前 38574 个 Instagram 个人资料及其各自的追随者。您可以从那里轻松地对其进行排序。
import requests as r
from bs4 import BeautifulSoup
import pandas as pd
import locale, time
from tqdm import tqdm, trange
url = 'https://www.trackalytics.com/the-most-followed-instagram-profiles/page/1/'
headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.87 Safari/537.36'}
locale.setlocale( locale.LC_ALL, 'en_US.UTF-8' )
wp = r.get(url, headers=headers).text
soup = BeautifulSoup(wp, 'html.parser')
pages = soup.find(id='paging').next_element.next_element.next_element.next_element.next_element
pages = int(pages.split()[3])
row_collector = []
progress = tqdm(range(1,pages))
for page in progress:
p_url = 'https://www.trackalytics.com/the-most-followed-instagram-profiles/page/' + str(page) + '/'
tp = r.get(p_url, headers=headers).text
tsoup = BeautifulSoup(tp, 'html.parser')
rows = tsoup.findAll("tr")
for row in range(1,25):
profile = rows[row].find(style='vertical-align:middle;width:45px;height:45px;').next_element.contents[0]
followers = rows[row].find(style='vertical-align:middle;width:45px;height:45px;').next_element.next_element.next_element.next_element.contents[0].split()[0]
followers = locale.atoi(followers)
temp = [profile,followers]
row_collector.append(temp)
# Enter rate limiting per page here
df = pd.DataFrame(row_collector)
df[['profile','followers']] = df[[0,1]]
del df[0]
del df[1]
display(df)
使用前 25 个配置文件预览数据框:
对我来说,这需要大约 20 分钟来运行整个循环以吸引 38,000 个用户。
如果您想测试脚本,这里有一个 Google Colab 笔记本: https://colab.research.google.com/drive/185o2fOdxRFHEsfvp7QOMILM6V2Rs9X22?usp=sharing
【讨论】: