【发布时间】:2018-03-23 21:58:10
【问题描述】:
如何获取完整分辨率的 instagram 个人资料图片? (旧的 URL 方案今天停止工作)。
regex='profile_pic_url_hd":"([0-9a-zA-Z._-/:]*)",'
适用于 320 像素的图片,但仅此而已。 150x150的img的前缀不同,但是jpg的url的ID/结尾是一样的。
谢谢
【问题讨论】:
标签: instagram
如何获取完整分辨率的 instagram 个人资料图片? (旧的 URL 方案今天停止工作)。
regex='profile_pic_url_hd":"([0-9a-zA-Z._-/:]*)",'
适用于 320 像素的图片,但仅此而已。 150x150的img的前缀不同,但是jpg的url的ID/结尾是一样的。
谢谢
【问题讨论】:
标签: instagram
好吧,伙计们,我找到了最终解决方案:
使用上面的 user_id 访问这个 JSON-API https://i.instagram.com/api/v1/users/{user_id}/info/ 完整尺寸的个人资料图片链接可在 [hd_profile_pic_url_info][url]
就是这样! :)
[编辑]
如果步骤 1 不起作用,我获取 user-id 的 Php 解决方案:
$name = "{username}";
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "https://www.instagram.com/$name/");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
$result = curl_exec($ch);
$http = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
if($http=="200") {
$doc = new DOMDocument();
$doc->loadHTML($result);
$xpath = new DOMXPath($doc);
$js = $xpath->query('//body/script[@type="text/javascript"]')->item(0)->nodeValue;
$start = strpos($js, '{');
$end = strrpos($js, ';');
$json = substr($js, $start, $end - $start);
$data = json_decode($json, true);
$user_id = $data["entry_data"]["ProfilePage"][0]["graphql"]["user"]["id"];
}
我正在 HTML 文档中搜索用户 ID。
【讨论】:
"}" 添加到if 的末尾,供想要复制的人使用
如果您查看源 html 并运行一个简单的查找文本搜索 logging_page_id,它将有 profilePage_,然后是一个数字。该数字是用户 ID。
例如:
logging_page_id":"profilePage_123456789
用户id是:123456789
【讨论】: