instagram - 使用 API 获取粉丝数超过 100 万的 Instagram 用户
问题描述
我可以从中获取用户数据i.instagram.com/api/v1/users/${account}/info
,但我只是想知道是否可以使用 API 获取关注者数量超过 100 万的用户。
因为现在如果我想这样做,唯一的方法是获取许多用户,然后按他们的关注者数量过滤他们。由于存在 API 速率限制,因此这不是一个好方法。
解决方案
我不相信通过任何官方 Instagram 端点都是可能的。您可以尝试像这样的第 3 方 API:https ://socialblade.com/business-api或者可能为此页面编写爬虫https://socialblade.com/instagram/top/100/followers以获得前 100 名用户.
这些是当前 Instagram API 的官方文档页面:
- https://developers.facebook.com/docs/instagram-api
- https://developers.facebook.com/docs/instagram-basic-display-api
编辑:
这是一个脚本,它将为您提供一个 Pandas DataFrame,其中包含前 38574 个 Instagram 个人资料及其各自来自 trackalytics 的追随者。您可以从那里轻松排序。
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
推荐阅读
- reactjs - 无法使用 React 路由器 + express 获取 /songs/new
- javascript - vuex getter 触发“组件渲染函数中的无限更新循环”
- c# - 尝试使用 API 更新时“输入不包含任何 JSON 令牌”
- python - gspread-pandas 作为 AWS Lambda 中的层
- python - py到exe文件无法打开exe
- spring-boot - java.lang.NullPointerException 与根本原因
- python - 使用 Python Pandas DataFrame 的选择性 Groupby-Aggregate
- nestjs - 在 NestJs + Typegoose 中将 _id 替换为 id
- java - 如何根据截击响应更新卡片视图按钮
- metal - Apple Metal 着色语言 - 为什么 Apple 建议只使用一个金属库