写于2018-12-27

因为需要做一个Ins相关的app,需要爬取ins的数据,总共试验了一个多礼拜最后宣告失败。。。

2019-1-8已成功

rhx_gis

特此记录一下

前言

某天领导说,咱们app默认只能获取用户前12张照片,我查了一下,因为默认爬取首页,里面的照片数据确实只有12条。我把原因balalal一说,领导立刻很机智的回答我:小宣,你是不是会node,你来弄一下吧。
好吧,我会node

开始观察

首先打开Instagram的首页,选上我喜欢的霉霉。F12,看network.
提示:需要科学上网

这里出现了2个请求,咱们主要看第二个,点开preview,没问题数据出来了,其中display_url就是咱们需要的啦

获取初始数据

我大概说一下如何获取用户资料以及前12张照片,方法很简单,直接get请求用户的首页,找到其中的shareData即可,这里几乎网上大部分人都能找到,给大家一个示例代码。这里可以直接用前端去get,也可以放在后端。 下述代码是在前端直接获取的

let username='taylorswift'   
let url='https://www.instagram.com/' + username + '/'    
axios.get(url)
.then(res=>{
  let dataStr = JSON.stringify(res)   
  let datarep = dataStr.replace(/(\r\n)|(\n)/g, "")    
  let n = datarep.match(/(window._sharedData\s?)(=\s?)(.*?);<\/script>/)[3]    
  let shareData =