如何从instagram标签查找下一页的数据

2024-10-06 19:29:49 发布

您现在位置:Python中文网/ 问答频道 /正文

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

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

在这个url返回的json数据中,我可以看到page_info属性,其中有has_next_page属性,该属性被设置为true。我的问题是如何发送上面的url以到达下一个页面,以及之后的那个页面,直到我检查has_next_page并且它是错误的。在

这似乎是直觉的尝试

^{pr2}$

以及

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

但两者似乎都不管用。我怀疑从原始url返回的数据中的end_cursor属性可能是一个线索,告诉我需要转到哪个url才能到达下一个页面,但我不确定。有人知道怎么做吗?在


Tags: 数据httpscomurl属性wwwtagspage
2条回答

我刚刚读了this article并在标记页上应用了相同的过程,您肯定可以在任何其他页面上执行此操作。在

您可以检查浏览器上的每个请求(以及JavaScripts)以找到query_hash和{}参数的来源。在

当我们加载更多内容时,请求的URL是什么?在

首先,让我们看看在加载更多内容时请求的URL是什么。您只需转到https://instagram.com/explore/tags/ruby,然后向下滚动,直到它在检查时加载另一个图像块。在

您将看到对以下URL的GET请求:

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

我们需要知道什么才能进入下一页?在

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

  1. query_hash
  2. after

我真的搞不懂first参数是如何工作的,但是如果您输入一个更大的值,但内容的数量不完全相同,它会加载更多的内容。在

我们从哪里得到变量afterquery_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"}

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

这里有一个用react/axios:https://codepen.io/ghostreef/pen/ZrKrXX编写的工作示例。我的示例从一个用户帐户中提取,所以我的响应xml是不同的。标记的结束光标位于data.graphql.hashtag.edge_hashtag_to_media.page_info.end_cursor,图像数据位于data.graphql.hashtag.edge_hashtag_to_media.edges,您必须迭代这些节点。在

相关问题 更多 >