【问题标题】:Get photos from a tag in Instagram从 Instagram 中的标签获取照片
【发布时间】:2026-01-30 01:40:02
【问题描述】:

我创建了一个应用程序来获取与特定标签相关的所有照片。但它限制为 15 张照片。如何获取所有带有用户名的照片。

这里是代码...

<?php

function scrape_insta_hash($tag) {
    $insta_source = 
     file_get_contents('https://www.instagram.com/explore/tags/'.$tag.'/'); 
    $shards = explode('window._sharedData = ', $insta_source);
    $insta_json = explode(';</script>', $shards[1]); 
    $insta_array = json_decode($insta_json[0], TRUE);
    return $insta_array; 
}

    $tag = 'paris'; 
    $results_array = scrape_insta_hash($tag);
    //$limit = 7; 
    $limit = 15; 
    $image_array= array(); 

    for ($i=0; $i < $limit; $i++) { 

        $latest_array = $results_array['entry_data']['TagPage'][0]['graphql']['hashtag']['edge_hashtag_to_media']['edges'][$i]['node'];
        $image_data  = '<img height="150" width="150" src="'.$latest_array['thumbnail_src'].'">'; // thumbnail and same sizes 
        //$image_data  = '<img src="'.$latest_array['display_src'].'">'; actual image and different sizes 
        array_push($image_array, $image_data);
    }

foreach ($image_array as $image) {
        echo $image;
}

?>

【问题讨论】:

    标签: php html instagram-api


    【解决方案1】:

    要处理所有返回的数据,请将您的 for 循环更改为 foreach 循环:

    foreach ($results_array['entry_data']['TagPage'][0]['graphql']['hashtag']['edge_hashtag_to_media']['edges'] as $latest_array) {
        $image_data  = '<img height="150" width="150" src="'.$latest_array['node']['thumbnail_src'].'">'; // thumbnail and same sizes 
        //$image_data  = '<img src="'.$latest_array['display_src'].'">'; actual image and different sizes 
        array_push($image_array, $image_data);
    }
    

    (注意$image_data的赋值也有变化)

    您仍然可以像这样限制此循环的结果数量(只需将$limit = 0; 设置为不限制输出):

    $limit = 15;
    $count = 0;
    foreach ($results_array['entry_data']['TagPage'][0]['graphql']['hashtag']['edge_hashtag_to_media']['edges'] as $latest_array) {
        $image_data  = '<img height="150" width="150" src="'.$latest_array['node']['thumbnail_src'].'">'; // thumbnail and same sizes 
        //$image_data  = '<img src="'.$latest_array['display_src'].'">'; actual image and different sizes 
        array_push($image_array, $image_data);
        $count++;
        if ($count == $limit) break;
    }
    

    【讨论】:

      【解决方案2】:

      您可以尝试获取数组的数量并将其分配给限制 会是这样的

        $limit = count($results_array['entry_data']['TagPage'][0]['graphql']['hashtag']['edge_hashtag_to_media']['edges']);
      

      它将为您提供该标签中所有图像的计数

      【讨论】: