簡體   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