如何提取 Instagram 数据

Posted

技术标签:

【中文标题】如何提取 Instagram 数据【英文标题】:How to Extract Instagram Data 【发布时间】:2016-12-31 05:16:53 【问题描述】:

我正在尝试构建 Instagram 帐户的 Microsoft Access 数据库,并希望提取以下数据等:

帐户名称 关注者数量 关注人数 帖子数量(及其日期) 图片点赞数 图片上的 cmets 数量

我在构建数据库时没有遇到任何问题,但我想知道是否有更简单/更快的方法来获取所有信息,而无需查看每个单独的图片/帐户并挑选信息。

Microsoft Access 是解决此问题的最佳方式吗?有没有更好的解决方案?

【问题讨论】:

我决定不打开页面源并从那里取出我需要的一切。 访问是最糟糕的选择。 【参考方案1】:

为什么不直接用url看json数据:

https://www.instagram.com//?__a=1

【讨论】:

它可以工作,但它没有打开,这意味着你应该登录到 instagram 以使这个 url 工作【参考方案2】:

如果这个问题有“web-Scraping”关键字,那么请允许我 在这里分享一些信息..

Instagram 的 html 源代码中有一个 javascript JSON 数据,而 通过链接显示用户信息,例如 https://www.instagram.com/user-account/。您可以通过以下方式解析这些数据 任何脚本语言都可以获取 JSON 数据。

Instagram 在单个请求中仅显示 10 个帖子,您可以看到 用户的基本信息,如用户名、简历、帖子数、数 追随者和追随者。但是,如果我们需要所有喜欢和 cmets 和 每个照片帖子的所有图像或喜欢和 cmets。然后 我们必须点击他们的“Load more”按钮。

加载更多请求 Ajax 调用包含“?max_id”,它会为您提供下一个 10个帖子信息。所以你必须创建一个 Post 循环来发送/获取 休息信息直到 'max_id' 为空或为空

示例请求:首页,https://www.instagram.com/demo-user/

下一个数据请求:https://www.instagram.com/demo-user/?max_id=1533276522

等等……

最近我有一些空闲时间,我在 Instagram 上很生气 ;) 所以只是 制作了一个脚本来解决所有这些问题。这适用于 php 和代码 评论很好,所以我认为这不会导致任何问题 了解申请流程。你可以看到脚本,它是如何工作的 & 可以将逻辑与任何其他语言一起使用。

来自GitHub Repository Code

&.. 是的,它不需要 Instagram API 或其他.. :)

【讨论】:

您好,我需要从 Java 作为后端进程执行此操作。你能告诉我们如何卷曲加载更多(instagram.com/demo-user/?max_id=1533276522)作为下一个网址吗? 我想获取 hd_profile_pic_url_info。这个有可能吗 @Awadesh,这是来自开发人员的电话。 “hd_profile_pic_url_info”是用户搜索的一个选项,但不幸的是,用户搜索还没有工作,这就是为什么您将无法获得“hd_profile_pic_url_info”。好吧,您可以尝试使用带有json数据“instagram.com/explore/tags/flowers/?__a=1”的标签(hashtag)并在json数据中找到“display_url”。希望对你有帮助:)【参考方案3】:

您绝对应该查看 Instagram 的 API,它可以为您提供您想要抓取的所有公共信息。您只需要编写一个脚本来进行正确的 API 调用(如下所示)。

来自 Instagram 的网站:

我们尽最大努力使我们的所有 URL 都是 RESTful。每个端点 (URL) 都可以支持四种不同的 http 动词之一。 GET 请求获取对象信息,POST 请求创建对象,PUT 请求更新对象,最后 DELETE 请求将删除对象。

当您在代码中使用 URL 时,您只需要准备好相关帐户的 ACCESS-TOKEN 值,并且能够解压 Instagram 随每个返回给您的 json获取请求。如果数据不直接可用,您始终可以间接将其退出。 - 帐户名称 - 追随者人数 - 关注人数

这是一个很好的起点: https://www.instagram.com/developer/endpoints/users/#get_users

以下是在 python 中调用 API 的方法:

#Python 2.7.6
#RestfulClient.py

import requests
from requests.auth import HTTPDigestAuth
import json

# Replace with the correct URL
url = "http://api_url"

# It is a good practice not to hardcode the credentials. So ask the user to enter credentials at runtime
myResponse = requests.get(url,auth=HTTPDigestAuth(raw_input("username: "), raw_input("Password: ")), verify=True)
#print (myResponse.status_code)

# For successful API call, response code will be 200 (OK)
if(myResponse.ok):

    # Loading the response data into a dict variable
    # json.loads takes in only binary or string variables so using content to fetch binary content
    # Loads (Load String) takes a Json file and converts into python data structure (dict or list, depending on JSON)
    jData = json.loads(myResponse.content)

    print("The response contains 0 properties".format(len(jData)))
    print("\n")
    for key in jData:
        print key + " : " + jData[key]
else:
  # If response code is not ok (200), print the resulting http error code with description
    myResponse.raise_for_status()

【讨论】:

据我了解,API 要求用户允许您访问他们的(已经公开的)信息。是这样吗?【参考方案4】:

这个 repo 拥有一切:https://github.com/rarcega/instagram-scraper

请正确阅读选项。

instagram-scraper incindia -m 500 --media-metadata --include-location --media-types none 给了我一个 json,它有:

媒体图片的网址, 媒体类型、观看次数、 点赞数,cmets 数(--comment 也会给你所有的 cmets)

还有更多等我去探索。

您也可以下载所有媒体

【讨论】:

以上是关于如何提取 Instagram 数据的主要内容,如果未能解决你的问题,请参考以下文章

Instagram 登录会完全弃用吗?

如何提取 Instagram 数据

如何从 instagram api 中提取基于位置 ID 的任何类型的地理空间数据?

使用 axios 提取 instagram 数据并且 ?__a=1 半天后被阻止(1 个请求/分钟)

用 php 提取 Instagram 信息——解码然后呢?

Instagram 访问令牌过期