How to pair instagram followers and subscriptions by nickname?

For some reason, if I use file_getcontents, it doesn't get the page itself, or rather, it doesn't get anything at all, but everything works on other sites.

         function slice($a,$b,$c,$d,$content,&$name){
$s=strpos($content,$a);
if ($b!==0){
    //echo "good";
    $s=strpos($content,$b,$s);
}
$s=strpos($content,$c,$s)+1;
$name=substr($content,$s); 
$pos=strpos($name,$d);
$name=substr($name,0,$pos);
}

//$getUsername=$_POST['getUsername'];
$getUsername='maxgalkinru';
$url='https://www.instagram.com/'.$getUsername.'/';
echo $url;
 $context  = stream_context_create(array('http' => array('user_agent' => 
'custom user agent string')));
$content=file_get_contents($url, false, $context);
print $content;
slice('html',0,'h','l',$content,$followers);//name
echo $name;
slice('<a class="_t98z6" href="/'.$getUsername.'/followers/">' , 
'title="','"','"', $content, $followers);//name
slice('<a class="_t98z6" 
 href="/'.$getUsername.'/following/">', 'title="','"','"', $content, 
 $following );//name 
?>
<p> followers: <?php echo $followers; ?> </p>
<p> following: <?php echo $following; ?> </p>

Outputs: https://www.instagram.com/maxgalkinru/

Followers: en

Following: en

Author: Александр, 2017-10-30

2 answers

Your code doesn't work because there are no class="_t98z6" in the source code of the parsed page.

Sample code for parsing the number of subscribers and subscriptions using curl:

<?php
/**
 * Created by PhpStorm.
 * User: user
 * Date: 30.10.2017
 * Time: 21:17
 */


$url = 'https://www.instagram.com/katrin_shok/';

$curl = curl_init();

//опции
$options = [
    CURLOPT_URL            => $url,
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_SSL_VERIFYPEER => false,
    CURLOPT_CONNECTTIMEOUT => 20,
    CURLOPT_TIMEOUT        => 20,
    CURLOPT_USERAGENT      => 'Mozilla/5.0 (Windows NT 6.3; WOW64; rv:49.0) Gecko/20100101 Firefox/49.0',
    CURLOPT_REFERER        => 'https://www.instagram.com/',
];

//чик чик опции
curl_setopt_array($curl, $options);

//чик чик запуск
$html = curl_exec($curl);

//и закрываем
curl_close($curl);

//подписчиков
preg_match('#"followed_by": {"count": (\d{1,10})}#isu',$html, $finded);
$followers = $finded[1];

//подписки
preg_match('#"follows": {"count": (\d{1,10})}#isu',$html, $finded);
$follows = $finded[1];

//на бочку
echo 'Подписичек: ' . $followers . '<br>';
echo 'Подписки: ' . $follows . '<br>';
//Подписичек: 637700
//Подписки: 314
 1
Author: Jean-Claude, 2017-10-30 18:41:27

Catch the parser on js

I just showed an alternative parsing option that works 100% only using javascript. If you want, you can quickly understand the code and substitute it in php

// Copyright Леонид Залюбовский
try {
// Объявление переменных ------------------------------------------------------------
var a = document.getElementsByClassName("SrXZj YHaCL");     // ul тег аккаунтов
var x = document.getElementsByClassName("j6cq2");           // div тег списка
var n = document.getElementsByClassName("NroHT");           // li тег аккаунтов
var timeoutID ='';
var t = 1;

// Выборка кол-ва подписчиков и подписок по языку RU-EN ---------
// Классы расположены на главной странице Подписчики-Подписки

if (document.getElementsByClassName("t48Bo fzjDT")[0].innerHTML =="Подписчики" || document.getElementsByClassName("t48Bo fzjDT")[0].innerHTML =="Followers" ){
var i = document.getElementsByClassName("g47SY")[1].innerHTML;
}else{
var i = document.getElementsByClassName("g47SY")[2].innerHTML;
}


// --------------------------------------------------------------------------------------------

i = i.match(/[^"]+/g);
i = i.join('');
i = i.match(/[^\s]+/g);
i = i.join('');
i = i.match(/[^,]+/g);
i = i.join('');
console.log('%cПАРСЕР ПОДПИСЧИКОВ INSTAGRAM', 'color: #1d6ba3; font-size:28px;');
console.log('%c--------------------------------------------------------------------------------------------//', 'color: #a22e1c; font-size:16px;');
console.log('%cРазработал Леонид Залюбовский 2018 | www.leoneed.pro | http://Instagram.com/leoneed.pro', 'color: #1d6ba3; font-size:14px;');
console.log('%c--------------------------------------------------------------------------------------------//', 'color: #a22e1c; font-size:16px;');
console.log('%cКол-во аккаунтов для сбора: '+i +' шт.', 'color: #13a555; font-size:20px;');
console.log('%cНачался сбор данных, дождитесь выполнения...', 'color: #13a555; font-size:20px;');
function start() {
  t++;
if (i == t){
off();
  console.log('%cАккаунтов собрано: '+n.length +' шт.', 'color: #13a555; font-size:20px;');
  if (i>n.length){console.log('%cСтранно, но '+(i - n.length) +' шт. не определились, ну и ладно=)', 'color: #13a555; font-size:20px;')};
  var text =  a[0].innerHTML;
  var result = text.match(/title="[^"]+"/g);
  result = result.join(' ');
  result = result.match(/"[^"]+"/g);
  result = result.join(' ');
  result = result.match(/[^"]+/g);
  result = result.join('');
  result = result.match(/[^\s]+/g);
  result = result.join('\n');
console.log('%c//--------------------------------------------------------------------------------------------', 'color: #a22e1c; font-size:16px;');
  console.log(result);
console.log('%c//--------------------------------------------------------------------------------------------', 'color: #a22e1c; font-size:16px;');
  console.log('%cПоздравляю! Выделите собранные имена аккаунтов выше и нажмите CTRL-C, чтобы скопировать. Перейдите в любой текстовый редактор и нажмите CTRL-V, чтобы вставить данные.', 'color: #13a555; font-size:24px;');
console.log('%c//--------------------------------------------------------------------------------------------', 'color: #13a555; font-size:16px;');
}else{
x[0].scrollTop = x[0].scrollHeight;
run()
}
}

function run() {
 timeoutID = setTimeout(start, 100);
}
start();
}catch(e){
console.log('%cНажмите на странице Instagram на Подписчиков или Подписки, и запустите заново скрипт)', 'color: #a22e1c; font-size:28px;');
}
function off() {
    clearTimeout(timeoutID);
    timeoutID = null;
}

This code should be inserted into the browser console and select what to parse subscribers or subscriptions and click enter to collect.

 -2
Author: Cruze Fan, 2018-06-18 13:05:50