Ответы пользователя по тегу Instagram
  • Парсинг аккаунтов инстаграма по определенному местоположению?

    @2gaap
    Вот нашел такой пример на php

    php код отлично работает на phpfiddle.org

    <?php
    
    //переменные
    $url_parser="https://www.instagram.com/explore/locations/123456/"; //ссылка для парсинга
    $glubina_stranic="10"; //глубина парсинга, на одной странице 20 id пользователей
    
    class instaWrapper {
    static function getFeedByUrl($url) {
    $source = file_get_contents($url);
    if ($source == false) {
    echo "Connection problem";
    die();
    }
    $shards = explode('window._sharedData = ', $source);
    $insta_json = explode(';</script>', $shards[1]);
    $insta_array = json_decode($insta_json[0], TRUE);
    if (isset($insta_array['entry_data']['ProfilePage']))
    $nodes = $insta_array['entry_data']['ProfilePage'][0]['user']['media']['nodes'];
    elseif (isset($insta_array['entry_data']['LocationsPage']))
    $nodes = $insta_array['entry_data']['LocationsPage'][0]['location']['media']['nodes'];
    elseif (isset($insta_array['entry_data']['TagPage']))
    $nodes = $insta_array['entry_data']['TagPage'][0]['tag']['media']['nodes'];
    $result=[];
    foreach($nodes as $item) {
    $result[]=[
    "id" => $item['id'],
    "code" => $item['code'],
    "url" => "https://www.instagram.com/p/".$item['code'],
    "timestamp" => $item['date'],
    "date" => date("d.m.Y H:i:s", $item['date']),
    "caption" => (isset($item['caption'])?$item['caption']:false),
    "owner_id" => $item['owner']['id'],
    "thumbnail_src" => $item['thumbnail_src'],
    "image_src" => $item['display_src'],
    "is_video" => (boolean)$item['is_video'],
    "dimensions" => $item['dimensions']
    ];
    }
    return $result;
    }
    }
    
    $insta_massiv = (
    instaWrapper::getFeedByUrl("$url_parser")
    );
    for ($i = 1; $i < count($insta_massiv); $i++) 
    { 
    echo $insta_massiv[$i]['owner_id']."<br>";
    $last_id_anketa = $insta_massiv[$i]['id']; 
    }
    $x=0;
    while ($x++<$glubina_stranic) 
    {
    $insta_massiv = (
    instaWrapper::getFeedByUrl("$url_parser?max_id=$last_id_anketa")
    ); 
    for ($i = 1; $i < count($insta_massiv); $i++) 
    { 
    echo $insta_massiv[$i]['owner_id']."<br>";
    $last_id_anketa = $insta_massiv[$i]['id']; 
    }
    }
    ?>


    Источник: www.bubasik.com/php-parser-in...m-po-geometke

    У скрипта только 2 параметра:
    - Ссылка для парсинга, её можно взять зайдя на сайт инстаграм, ввести адрес или свой город и получить ссылку в адресной строке браузера
    - Глубина парсинга, число до какой страницы собирайть id пользователей.

    attachment.php?attachmentid=161819&stc=1

    Дополнено:
    Изменил слегка скрипт — теперь выводит текст постов. Код тут — https://pastebin.com/0SRAMPMs
    Также запустить код online можно на сервисе — phpfiddle.org
    Ответ написан
    Комментировать