从 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;
}
?>
你可以尝试获取数组的计数并将其分配给限制
会是这样的
$limit = count($results_array['entry_data']['TagPage'][0]['graphql']['hashtag']['edge_hashtag_to_media']['edges']);
它将为您提供该标签中所有图像的数量
要处理所有返回的数据,请将 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;
}
我创建了一个应用程序来获取与特定标签相关的所有照片。但它限制为 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;
}
?>
你可以尝试获取数组的计数并将其分配给限制 会是这样的
$limit = count($results_array['entry_data']['TagPage'][0]['graphql']['hashtag']['edge_hashtag_to_media']['edges']);
它将为您提供该标签中所有图像的数量
要处理所有返回的数据,请将 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;
}