如何从instagram标记中查找下一页数据

问题描述 投票:3回答:2

我可以输入以下url来获取所有带有#losangeles标记的IG帖子,方法是/请求以下端点:

https://www.instagram.com/explore/tags/losangeles/?__a=1

在从这个url返回的json数据中,我可以看到page_info属性,并且在其中有has_next_page属性并且设置为等于true。我的问题是如何修改上面的url以进入下一页,以及之后的那个,所以直到我检查has_next_page并且它是假的。

尝试似乎很直观

https://www.instagram.com/explore/tags/losangeles/?__a=2

https://www.instagram.com/explore/tags/losangeles/?__b=1

但似乎都不起作用。我怀疑从原始网址返回的数据中的end_cursor属性可能是一个线索,我需要去哪个网址才能到达下一页但不确定。有谁知道如何做到这一点?

python python-requests instagram instagram-api
2个回答
2
投票

这个有可能。每个响应都包含一个end_cursor参数。在您的下一个请求中,使用max_id的值添加end_cursor参数,如下所示:https://www.instagram.com/explore/tags/losangeles/?__a=1&max_id=<value>

我在这里用react / axios编写了一个工作示例:https://codepen.io/ghostreef/pen/ZrKrXX。我的示例来自用户帐户,因此我的响应xml是不同的。标签的end_cursor位于data.graphql.hashtag.edge_hashtag_to_media.page_info.end_cursor,图像数据位于data.graphql.hashtag.edge_hashtag_to_media.edges,您必须遍历节点。


1
投票

好吧,我刚刚阅读了this article并在标签页面上应用了相同的程序,你绝对可以在你想要的任何其他页面上执行此操作。

您可以在浏览器上检查每个请求(以及JavaScripts),以查找query_hashafterparameters的来源。

What is the requested URL when we load more content?

首先,让我们看看加载更多内容时请求的URL是什么。您可以通过转到https://instagram.com/explore/tags/ruby然后向下滚动直到它在检查时加载另一块图像来执行此操作。

您将看到以下网址的GET请求:

https://www.instagram.com/graphql/query/?query_hash=1780c1b186e2c37de9f7da95ce41bb67&variables={"tag_name":"ruby","first":12,"after":"AQAFSpwCDXVgp2pnTXf57MavtlZnwU4ptNnC6nRGtIs5C9erOWwzZkcfSiq812RlMqDLzKlCzsAx-b9sIsIm4X4REE1LbZeA5yok7yA2jGcJqg"}

What do we need to know to get the next page?

正如您在上面我们需要的链接中看到的那样:

  1. query_hash
  2. after

我无法弄清楚first参数是如何工作的,但是如果你输入更大的值而不是完全相同的内容数量,它会加载更多的内容。

Where do we get variables after and query_hash?

到现在为止还挺好。如果我们知道query_hashafter变量,我们可以请求下一页的图像。

您可以通过此链接轻松访问标记页的第一个JSON文件:

https://www.instagram.com/explore/tags/yourtagname/?__a=1

我使用过ruby标签,所以我的是:

https://www.instagram.com/explore/tags/ruby/?__a=1

加载JSON文件后,您可以看到有一个名为end_cursor的变量。这是我们的after参数。

end_cursor variable preview


要获取query_hash参数,您需要查看.js文件

https://www.instagram.com/static/bundles/base/TagPageContainer.js/f1172b0dfea6.js

然后你只需要搜索字符串byTagName.get(t).pagination},queryId:",然后是你需要的query_hash

然后使用我们在上面找到的变量将所有部分放在一起并浏览到我们的新链接以获取下一页的JSON文件。

https://www.instagram.com/graphql/query/?query_hash=1780c1b186e2c37de9f7da95ce41bb67&variables={"tag_name":"ruby","first":9,"after":"AQDPE3V-ycMcCFjHv8Gq7MnR-x2hxNOI6WQGO8psxHsRWJo3pIDpR-qaKUITQGE3-dvEYYdG4ueWzSPLabVH7VOBZq4oWZYvsjswh2w622HwEQ"}

© www.soinside.com 2019 - 2024. All rights reserved.