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
0
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