Instagram API

Instagram API

改版後期改用sandbox模式,意思為,所有app要先經過審核才可使用public_content部分,一開始你只可讀取到你自己的content,或是你可以把別人邀請入你的sandbox,之後其同意後你也可以API獲取其資訊,不然都需經過審核才可使用API

1.先到如下網站,註冊帳號

https://www.instagram.com/developer

  • 到Authentication可看獲取Access token的方法

  • 到EndPoints可看使用API的方法

2.其分為兩種存取API的方式

使用三階段(建議此種作法)
client-ID-->code-->access-token

使用兩階段(如沒有server,安全性較低)
client-ID-->access-token


參考如下
https://www.instagram.com/developer/authentication/

範例:

之後會跳轉到你填寫的redirect URL 並在網址最後面附上Access-token

爬蟲參數

因為現在API開放少,所以決定直接使用爬蟲方法來使用API

查詢指定tag的所有文章

GET

查詢使用者基本資訊與前幾篇文章

GET

可以查到使用者數字ID、名字、追蹤人數、等等。

查詢使用者文章與動態

Query請求格式

instagram的XHR固定格式如下

  • query_hash 為發送請求的種類 ( 例如請求加載使用者後續圖片的hash均為 472f257a40c653c64c666ce877d59d2b)

  • variables 為一個json經過urlEncode過的字串

Querystring參數

有兩個參數,query_hash與variables

第一種:

當query_hash為7e1e0c68bbe459cf48cbd5533ddee9d時 (加載使用者推薦好友相關的資訊)

variables參數:

e.g.

第二種:

當query_hash為 472f257a40c653c64c666ce877d59d2b時 (加載使用者文章)

variables參數:

其中first參數代表取初幾張圖,after也為end_cursor,意思為結束的位置,所以越大越好,這樣我們才能一次取出足夠的圖片

after參數建議使用如下

end_cursor可以從上次的query請求中的Response獲得。

e.g.

第三種:

當query_hash為 bf41e22b1c4ba4c9f31b844ebb7d9056 時 (加載使用者動態影片)

reel_ids即為使用者ID

e.g.

取得使用者發佈過的文章圖片

所以現在我們來試著取得使用者的所有文章,首先我們要先知道要查詢的使用者ID

所以我們先使用如下查詢ID

之後我們有了ID

我們可以將下面改為如下查找使用者發表過的文章數量

有了ID與文章數量後我們就可以來拼出參數

我們先拼出querystring

發送請求

注意:如果first參數超過一千以上會產生timeout情況,返回FB錯誤頁面。

接著我們用Async Loop的方式讀取使用者所有圖片

注意事項:

1.2017/10/1號之後只能取得Basic的資訊,其他 API 都不開放了。

https://www.instagram.com/developer/changelog/

2.爬蟲執行過多次後會出現以下錯誤:

解決方法為把first調大,並減少iterate的request次數

3.2019年之後`?__a=1` request要加上cookie才可

從 userid 獲得資料

Last updated

Was this helpful?