现在比较不错的Instagram图片下载软件有InstaSave,也有一些微信公众号如instome。不过它们要么是界面一堆广告要么就是要收费。我简单看了一下instagram的请求和页面脚本,比想象的简单的多,没有什么加密措施。
以下是python实现代码:
import requests
import re
import uuid
//url: instagram复制地址;toFolder: 输出文件夹
def instaSave(url, toFolder):
res = requests.get(url).text
image_node = re.search(r'\[{"node":{"__typename":"GraphImage".+"edge_media_to_tagged_user":{"edges":\[\]}}}\]', res).group()
images_raw = re.findall(r'"display_url":"[^"]*', image_node)
for image_raw in images_raw:
image_url = image_raw[image_raw.find("https"):].replace("\\u0026", "&")
img_data = requests.get(image_url).content
with open(toFolder + str(uuid.uuid1()) + ".jpg", 'wb') as handler:
handler.write(img_data)
这个代码是可以下载一条动态的所有图片的,下载的分辨率是原图最高分辨率。主要就是通过2行正则表达式匹配出图片的url,然后下载就可以了,其它语言用这个逻辑也相当好实现,要想手机用就自己弄个服务器把代码部署上去就ok了。
以下是调用:
url = "https://www.instagram.com/p/B3e158wlm_r/?igshid=150ovg90qct4p"
path = "E:/"
instaSave(url, path)
url从instagram每个动态右上角三个点点击后的下拉框的复制链接获得。
以下是下载的图片: