簡體   English   中英

從Instagram中的標簽獲取照片

[英]Get photos from a tag in Instagram

我創建了一個應用程序來獲取與特定標簽相關的所有照片。 但是最多只能拍攝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;
}

?>

要處理所有返回的數據,請將for循環更改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;
}

您可以嘗試獲取數組的數量並將其分配以限制它,這將是這樣的

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

它將為您提供該標簽中所有圖像的計數

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM