检索超过150条Instagram评论

时间:2014-04-14 20:11:06

标签: instagram instagram-api

问题

我希望能够查看Instagram媒体中任何特定内容的所有评论,即使媒体有超过150条评论。截至目前,似乎不可能在Instagram网站上查看最近20条关于媒体的评论,如果使用Instagram API ConsoleInstagram API Libraries,最近的150条评论返回时没有分页选项或查看添加评论。

我尝试过什么

当然,我首先在提供的控制台和我自己的环境中尝试了记录的media comment query。在这两种情况下,最多返回150条评论。难过,我开始在网上寻找更多信息。

彻底阅读了Instagram API Documentation,在Instagram API Console中测试了各种端点,并阅读了Instagram标签中的各种StackOverflow问题和几个Instagram主题的Instagram API Google Group问题,我想知道是否有我可以尝试一下无证件的机会。

user recent media endpoint文档包含max_idmax_timestamp的参数,这些参数允许通过检索所述max_id之前的媒体,为任何给定用户分析最新媒体或max_timestamp。由于每个评论都附带created_timeid属性,因此我尝试为max_idmax_timestamp添加参数(包括它们自己和一起)以获取各种注释ID和时间戳试图翻阅评论。我没有尝试过。

除非有人另外提出建议,否则我现在处于停滞状态。

具体示例

使用Instagram API Console,我采取了以下步骤,尝试获取this photo的所有评论。

  1. OAuth2令牌
  2. 进行了身份验证
  3. 转到coltonlhaynes的用户搜索查询以获取用户id: 9610843
  4. 让用户最近的媒体查询获取用户ID:9610843以获取最新媒体
  5. 收集有关最新媒体的信息(以上链接的照片)
    • 媒体id: 698057751201132903_9610843
    • 评论count: 1375
  6. 对媒体ID 698057751201132903_9610843进行媒体评论查询,以获取最新评论
  7. 收集有关最近评论的信息
    • created time: 1397460230
    • 评论id: 698269477955776593
  8. 使用以下附加查询参数字符串对媒体ID 698057751201132903_9610843进行媒体评论查询以尝试翻阅评论,但收到的结果与步骤#6相同
    • ?max_timestamp=1397460230
    • ?max_id=698269477955776593
    • ?max_timestamp=1397460230&max_id=698269477955776593
    • ?max_id=698269477955776593&max_timestamp=1397460230
  9. 请注意

    据我所知,这个问题没有解决方案,但是自Instagram开发团队has stated以来他们将不再监控Google Group并将监控StackOverflow,我就是这样做的这里。

4 个答案:

答案 0 :(得分:9)

好的,这将是一个非常" Hacky"解决方案,我目前没有设置这样做(由于家里缺乏ADSL)但我可以提供一个逐步指导我如何处理这个问题。

首先,您需要一个名为"Charles Web Debuging Proxy"

的工具

网站上有一个关于如何启用" SSL调试的教程"在查尔斯,(这将要求你在你的移动设备上安装一个新的"根证书"欺骗它认为由查尔斯签署的https交易实际上是由instagram.com签署的)

现在将您的移动设备设置为通过所述代理路由所有请求(必须在您的本地Wi-Fi网络上安装)。

转到https://www.google.com并检查查尔斯是否记录了请求和响应。

一旦设置正确,您就可以查看Instagram应用程序本身用于生成所述评论页面的API调用。

答案 1 :(得分:2)

这里的通用答案是" 不,这是不可能的通过常规端点"。

Instagram更新Rate Limits 2015年11月17日之后)。 Instagram平台上的所有速率限制都是针对每个访问令牌单独控制的,并且在滑动的1小时窗口中。实时应用的速率限制高于沙盒模式中的应用。

在全球范围内说明了下一个限制:

  

全球费率限制

     

应用全局速率限制,包括由a发出的所有API调用   无论是什么,都可以通过 1小时滑动窗口访问每个访问令牌   特定的终点。费率限制也适用于无效或格式错误   请求。

     
      
  • 沙箱价格限制:500 /小时
  •   
  • 直播最高限额:5000 /小时
  •   

另外还有评论端点的限制:

  

端点特定速率限制

     

用于发布的端点(POST或DELETE)具有基于每个端点应用的速率限制。   您的OAuth客户端对这些端点的任何调用也是   计入上述全球费率限制。

     
      
  • 沙盒 / media / media-id / 评论 :30 /小时
  •   
  • 直播 / media / media-id / 评论 :60 /小时
  •   

如果您的应用超出任何这些速率限制,您将收到一条HTTP响应代码为429 (Too Many Requests)的回复。

一旦Instagram平台按access token为基础对其进行控制,您可以使用具有多个访问令牌的多线程来实现更大的限制。但它有一些警告:1。并非所有内容都可以与多个访问令牌并行,因为上下文会有所不同。 2.它可能与Platform PolicyTOS

相矛盾

答案 2 :(得分:0)

This isn't "hacky" at all.

As Instagram gives the link where you are able to get recieve all comments here: https://instagram.com/developer/endpoints/comments/

All you have to do is Looping over the link Instagram is giving you. I've done it like this. Im using the Api to do it this way.

  public function getUserMediaComments($id, $limit = 0) {
    return $this->_makeCall('media/'.$id.'/comments', true, array('count' => $limit));
  }

The $id is the media_id of the picture. If you foreach over that function with the picture id you'll recieve all comments.

It wasn't that hard when I found out about this way.

You could also do it like this while foreaching over it. :

$comments = json_decode(file_get_contents('https://api.instagram.com/v1/' . 'media/'. $image->id . '/comments?access_token='. $data->access_token));

It both returns you an array of the comments of the picture(s).

答案 3 :(得分:0)

根据@Farside 所说的,我不相信书本上可以做到。但是,您可以通过使用 Selenium 并抓取 Python 中的所有注释来实现。您可以使用 the InstaPy libary。他们有快速入门模板,让这一切变得非常简单。