【问题标题】:Fetching instagram users who's followers count more than 1 million using API使用 API 获取粉丝数超过 100 万的 Instagram 用户
【发布时间】:2021-02-08 22:19:26
【问题描述】:

我可以从i.instagram.com/api/v1/users/${account}/info 获取用户数据,但我只是想知道是否可以使用 API 获取关注者数量超过 100 万的用户。

因为现在如果我想这样做,唯一的方法是获取许多用户,然后按他们的关注者数量过滤他们。由于有 API 速率限制,所以这不是一个好方法。

【问题讨论】:

    标签: instagram instagram-api


    【解决方案1】:

    我认为这不可能通过任何官方 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

    【讨论】:

    • socialblade 仅适用于前 5000 名,并且是付费服务。我已经阅读了官方文档,但没有这样的 api 可用。
    • @Eason 我已经用一个 python 脚本更新了我的答案,它将获取更多的顶级 Instagram 个人资料。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-03-09
    • 2020-12-21
    • 1970-01-01
    • 2011-03-09
    • 1970-01-01
    • 1970-01-01
    • 2015-10-12
    相关资源
    最近更新 更多