繁体   English   中英

强制使用 JavaScript 远程加载 Instagram 个人资料页面的源代码

[英]Force Instagram profile page's source to load remotely with JavaScript

我正在为 Instagram 用户创建一个基于网络的实时总数,例如计数。 由于 Instagram 不提供通过他们的 API 获取 Instagram 个人资料上的总点赞数,我通过检索 html 源代码并从中提取我需要的数据来抓取目标用户个人资料页面的点赞数。 https://instagram.com/USERNAME )。 这一切正常,但是源中只有 12 个帖子被加载,因为您必须向下滚动才能加载更多帖子(您可以通过访问https://instagram.com/selenagomez和向下滚动。您会看到它在显示更多帖子之前快速加载)。 我的目标是能够加载所有帖子,然后从该源文件中提取我需要的数据。

加载的帖子数量非常难以预测。 对于经过验证的用户来说,它加载了 24 个帖子,而未经验证的用户则加载了 12 个,这对我来说没有多大意义。 我在 Instagram 的 html 源文件中环顾四周,但似乎没有任何简单的方法可以加载额外的帖子,而无需自己在浏览器中实际操作。 (但这行不通,因为我希望通过代码远程完成这一切)

要加载源文件,我使用以下代码:

var name = "selenagomez";
var url = "http://instagram.com/" + name;

    $.get(url, function(response) {
        ... regex ...
     }

在源代码中,Instagram 以以下形式附在帖子上的点赞数:

edge_liked_by':{'count':1234}

检索源后,我正在使用正则表达式去除除这些 edge_liked_by':{'count':1234} 的数字之外的所有内容。 然后将数字放入如下数组中:

[1, 2, 3, 4, 5 etc, etc]

之后将数组相加得到总点赞数并显示在网页上。 所有这些代码都运行良好。

最终,我只是想看看如何强制 Instagram 个人资料页面远程加载所有帖子,以便我可以从源中提取点赞数。

提前感谢您对此的任何帮助。

我找到了另一种方法,通过利用https://instagram.com/graphql/query提供的 END_CURSOR 值进行分页。

对于任何想知道检索帖子的 JSON 的链接如下的人: https://www.instagram.com/graphql/query/?query_hash=42323d64886122307be10013ad2dcc44&variables= {"id":"PROFILE ID","first":"INT", "之后":"END_CURSOR"}

其中PROFILE ID是个人资料的数字 ID,可以从另一个 JSON 链接中检索: https : //www.instagram.com/ USERNAME ?__a=1

INT是要获取的 JSON 帖子数量。 每个请求可以是 1 到 50 之间的任何值。

超过 50 的技巧是在下一个链接中添加提供的 END_CURSOR 字符串,这将进入下一页的帖子,在那里您可以获得另外 50。

笔记:

  • 如果您只是从用户那里获取最近的 1-50 个帖子,则不必在链接中提供 END_CURSOR 值。 结束光标只有在您希望获取超过 50 个最新帖子时才有用。

  • 截至目前,query_hash 是静态的,可以保留在42323d64886122307be10013ad2dcc44

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM