我可以输入以下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才能到达下一个页面,但我不确定。有人知道怎么做吗?在
我刚刚读了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"}
我们需要知道什么才能进入下一页?在
正如您在上面的链接中看到的,我们需要:
query_hash
after
我真的搞不懂
first
参数是如何工作的,但是如果您输入一个更大的值,但内容的数量不完全相同,它会加载更多的内容。在我们从哪里得到变量
after
和query_hash
?在到目前为止还不错。如果我们知道
query_hash
和after
变量,我们可以请求图像的下一页。在您可以通过以下链接轻松访问标记页的第一个JSON文件:
https://www.instagram.com/explore/tags/yourtagname/?__a=1
我使用了
ruby
标记,因此我的标签是:https://www.instagram.com/explore/tags/ruby/?__a=1
加载JSON文件后,可以看到一个名为
end_cursor
的变量。这是我们的after
参数。在要获得
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
,您必须迭代这些节点。在相关问题 更多 >
编程相关推荐