九行代码自动下载instagram原图

现在比较不错的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每个动态右上角三个点点击后的下拉框的复制链接获得。

以下是下载的图片:

九行代码自动下载instagram原图_第1张图片九行代码自动下载instagram原图_第2张图片

你可能感兴趣的:(爬虫)