如何在没有API的情况下在Instagram中获取所有hashtag图片?

问题描述:

这是我用来获取没有API的hashtag图像的代码。我不想使用任何凭据。无需添加client_id或访问令牌。但我只能得到15张图片。我如何获得所有图像?如何在没有API的情况下在Instagram中获取所有hashtag图片?

<div> 

    <form action='#' method='post'> 
    <input type='input' name='txttag' /> 
    <input type='submit' value='Get Image' /> 
    </form> 

    </div> 


    <?php 
    function scrape_insta_hash($tag) { 
     $insta_source = file_get_contents('https://www.instagram.com/explore/tags/'.$tag.'/'); // instagrame tag url 
     $shards = explode('window._sharedData = ', $insta_source); 
     $insta_json = explode(';</script>', $shards[1]); 
     $insta_array = json_decode($insta_json[0], TRUE); 
     return $insta_array; // this return a lot things print it and see what else you need 
    } 

    if(isset($_POST['txttag'])) 
    { 
     $tag =$_POST['txttag']; // tag for which ou want images 
     $results_array = scrape_insta_hash($tag); 
     $limit = 15; // provide the limit thats important because one page only give some images then load more have to be clicked 
     $image_array= array(); // array to store images. 
      for ($i=0; $i < $limit; $i++) { 
       $latest_array = $results_array['entry_data']['TagPage'][0]['tag']['media']['nodes'][$i]; 
       $image_data = '<img 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;// this will echo the images wrap it in div or ul li what ever html structure 
      } 
      //https://www.instagram.com/explore/tags/your-tag-name/ 
    } 
    ?> 



    <style> 
    img { 
     height: 200px; 
     margin: 10px; 
    } 
    </style> 

轻松的方法是用?__a=1https://www.instagram.com/explore/tags/girls/?__a=1请求并接收JSON没有解析HTML和window._sharedData =

JSON中你可以看到page_info范围与end_cursor

"page_info": { 
    "has_previous_page": false, 
    "start_cursor": "1381007800712523480", 
    "end_cursor": "J0HWCVx1AAAAF0HWCVxxQAAAFiYA", 
    "has_next_page": true 
}, 

使用end_cursor请求下一部分图像:

https://www.instagram.com/explore/tags/girls/?__a=1&max_id=J0HWCVx1AAAAF0HWCVxxQAAAFiYA

UPD:

<?php 

$baseUrl = 'https://www.instagram.com/explore/tags/girls/?__a=1'; 
$url = $baseUrl; 

while(1) { 
    $json = json_decode(file_get_contents($url)); 
    print_r($json->tag->media->nodes); 
    if(!$json->tag->media->page_info->has_next_page) break; 
    $url = $baseUrl.'&max_id='.$json->tag->media->page_info->end_cursor; 
} 
+0

能否请你告诉我如何与你的代码打印超过20张。 –

+0

@jigsparmar看到更新 – ilyapt

+1

非常感谢你.. –