📌  相关文章
📜  使用Python下载 Instagram 个人资料图片

📅  最后修改于: 2022-05-13 01:54:59.747000             🧑  作者: Mango

使用Python下载 Instagram 个人资料图片

Instagram 是 Facebook 旗下的照片和视频共享社交网络服务, Python为 Instagram 的网页抓取提供了强大的工具。

所需模块和安装:

要求:

pip install requests

概念 -
对于给定的用户配置文件,打开view-source并找到“profile_pic_url_hd” 。要找到按 ctrl+f 并输入“profile_pic_url_hd” ,链接就是我们的数据或个人资料图片。
该链接将如下所示:

以下是该项目的逐步实施:

第一步:导入所有依赖

Python3
import requests
from bs4 import BeautifulSoup as bs
import json
import random
import os.path


Python3
insta_url='https://www.instagram.com'
inta_username= input('enter username of instagram : ')
 
response = requests.get(f"{insta_url}/{inta_username}/")


Python3
if response.ok:
    html=response.text
 
    bs_html=bs(html, features="lxml")
    bs_html=bs_html.text
    index=bs_html.find('profile_pic_url_hd')+21
 
    remaining_text=bs_html[index:]
    remaining_text_index=remaining_text.find('requested_by_viewer')-3
    string_url=remaining_text[:remaining_text_index].replace("\\u0026","&")
 
    print(string_url, "\n \n downloading..........")


Python3
while True:
    filename='pic'+str(random.randint(1, 100000))+'.jpg'
    file_exists = os.path.isfile(filename)
 
    if not file_exists:
        with open(filename, 'wb+') as handle:
            response = requests.get(string_url, stream=True)
            if not response.ok:
                print(response)
            for block in response.iter_content(1024):
                if not block:
                    break
                handle.write(block)
    else:
        continue
    break
print("\n                downloading completed ..............")


Python3
import instaloader
 
ig = instaloader.Instaloader()
dp = input("Enter Insta username : ")
 
ig.download_profile(dp , profile_pic_only=True)


第 2 步:询问用户名并向 Instagram 发送回复。

Python3

insta_url='https://www.instagram.com'
inta_username= input('enter username of instagram : ')
 
response = requests.get(f"{insta_url}/{inta_username}/")

第三步:如果回复正常,找到头像链接

注意:将 string_url 中的 '\\u0026' 替换为 '&' 以删除错误的 URL 时间戳或错误的 URL 哈希错误)

Python3

if response.ok:
    html=response.text
 
    bs_html=bs(html, features="lxml")
    bs_html=bs_html.text
    index=bs_html.find('profile_pic_url_hd')+21
 
    remaining_text=bs_html[index:]
    remaining_text_index=remaining_text.find('requested_by_viewer')-3
    string_url=remaining_text[:remaining_text_index].replace("\\u0026","&")
 
    print(string_url, "\n \n downloading..........")

第 4 步:现在,创建一个循环并下载照片。

Python3

while True:
    filename='pic'+str(random.randint(1, 100000))+'.jpg'
    file_exists = os.path.isfile(filename)
 
    if not file_exists:
        with open(filename, 'wb+') as handle:
            response = requests.get(string_url, stream=True)
            if not response.ok:
                print(response)
            for block in response.iter_content(1024):
                if not block:
                    break
                handle.write(block)
    else:
        continue
    break
print("\n                downloading completed ..............")

输出:

其他方法:
我们只需提供用户的 Instagram 句柄,就可以使用 instaloader 模块下载任何 Instagram 帐户的个人资料图片。

首先我们需要安装 instaloader 模块:

pip install instaloader 

例子:

Python3

import instaloader
 
ig = instaloader.Instaloader()
dp = input("Enter Insta username : ")
 
ig.download_profile(dp , profile_pic_only=True)

输出:当我们输入用户 id 时,配置文件图片将被下载到同一目录中。