我正在执行一个脚本,以从用户名中抓取Instagram帖子,但是我在加载更多功能以及如何获取下12个帖子方面遇到问题。
到目前为止,这是我的职能:
function scrape_insta_user_images($username){
$insta_source = file_get_contents('https://www.instagram.com/'.$username.'/'); // instagram user url
$shards = explode('window._sharedData = ', $insta_source);
$insta_json = explode(';</script>', $shards[1]);
$insta_array = json_decode($insta_json[0], TRUE);
$results_array = $insta_array;
$image_array= array(); // array to store images.
$json = array();
$json['profile_pic'] = $results_array['entry_data']['ProfilePage'][0]['graphql']['user']['profile_pic_url'];
$json['has_next_page'] = $results_array['entry_data']['ProfilePage'][0]['graphql']['user']['edge_owner_to_timeline_media']['page_info']['has_next_page'];
$json['max_id'] = $results_array['entry_data']['ProfilePage'][0]['graphql']['user']['edge_owner_to_timeline_media']['page_info']['end_cursor'];
$limit = 13;
for ($i=0; $i < $limit; $i++) {
if(isset($insta_array['media'][$i])){
$latest_array = $insta_array['media'][$i];
$json['images'][] = $latest_array['code'];
}
}
$limit = 56;
for ($i=0; $i < $limit; $i++) {
if(isset($results_array['entry_data']['ProfilePage'][0]['graphql']['user']['edge_owner_to_timeline_media']['edges'][$i])){
$latest_array = $results_array['entry_data']['ProfilePage'][0]['graphql']['user']['edge_owner_to_timeline_media']['edges'][$i]['node'];
$json['images'][] = $latest_array['shortcode']; // thumbnail and same sizes
}
}
return $json;
}
它还返回一堆标记或end_cursor值。但是我不知道要发送什么参数来获取下12个帖子。 Instagram向此类URL发出请求:
https://www.instagram.com/graphql/query/?query_hash=XXX&variables={"id":"XXX","first":12,"after":"XXX"}
任何帮助将不胜感激!