Rajan Kumar

rajan

Founder & Programmer at HackersFriend Updated May 16, 2020, 10:40 p.m. ⋅ 190 views

Building Instagram Profile pic downloader in python


We can use python to download profile pic of any instagram user by using web scraping. In this article I'll build an simple Instagram profile pic downloader.

We'll use following python packages to do our work.

  • requests
  • bs4
  • os

This is how our script is gonna look like.

Package os comes in-built with python. It will be used to access path where we'll store our downloaded profile pic. We'll have to download requests and bs4 though.

We can do it using pip.

pip install requests, bs4

Once we are done with installation of required packages, we can proceed with our script.

Understand Instagram's web page contents

You can open HTML source code of any users instagram profie page and look for "profile_pic_url_hd". You can do so by pressing ctl + f and searching in source code. Values of this json attribute is contains the url of user's profile pic.

We'll parse out the value then call this url to get the image.

import os.path
import requests 
from bs4 import BeautifulSoup as bs


home ='https://www.instagram.com/'
username = input('Username whose DP you want to downlaod: ')
finalUrl = home + username + "/"

response = requests.get(finalUrl)  # Fetch the user's profile page

if response.ok:
    try:
        html = response.text
        soup = bs(html, features ="lxml") 
        soup_text = soup.text # Convert the entire page data in text string
        start_index = soup_text.find('profile_pic_url_hd')+21
        remaining_text = soup_text[start_index:] # rest of the data after 'profile_pic_url_hd":"'
        last_index = remaining_text.find('requested_by_viewer')-3
        image_url = remaining_text[:last_index]

        print("The image url is ", image_url)

Downlaoding the profile pic

Once, we get out the value of profile pic from page we can call this url to download image.

import os.path
import requests 
from bs4 import BeautifulSoup as bs


home ='https://www.instagram.com/'
username = input('Username whose DP you want to downlaod: ')
finalUrl = home + username + "/"

response = requests.get(finalUrl)  # Fetch the user's profile page

if response.ok:
    try:
        html = response.text
        soup = bs(html, features ="lxml") 
        soup_text = soup.text # Convert the entire page data in text string
        start_index = soup_text.find('profile_pic_url_hd')+21
        remaining_text = soup_text[start_index:] # rest of the data after 'profile_pic_url_hd":"'
        last_index = remaining_text.find('requested_by_viewer')-3
        image_url = remaining_text[:last_index]

       # print("The image url is ", image_url)
        print("Iniating Download.....") 

        filename=username+'_insta_dp_'+'.jpg'
        with open(filename, 'wb+') as handle:
            response = requests.get(image_url.replace("\\u0026","&"))
            if not response.ok:
                print("Cannot download something went wrong.")
            else:
                handle.write(response.content)

        print("Download complete")
    except:

 

Once you are ready with the script you can give any instagram username to the script and it will download that user's profile pic.

enter username of instagram : google
String url:  https://instagram.fpat1-1.fna.fbcdn.net/v/t51.2885-19/s320x320/95014083_714049196089682_7323048346396917760_n.jpg?_nc_ht=instagram.fpat1-1.fna.fbcdn.net\u0026_nc_ohc=QtPHnO7rKDwAX-T6O6u\u0026oh=dc8e14af7e7262ec98cb2c81347a7c35\u0026oe=5EE34D8B


 downloading..........



 downloading..........

 Download complete..........

 



arrow_upward Upvote

comment Comment

arrow_downward downvote



Go back to feed

HackersFriend Updates





View more


Events


Nov. 28, 2018, 5:30 p.m.

Python from zero to hero

place Delhi

View details


Aug. 13, 2018, 5:30 p.m.

Python from zero to hero

place Bangalore ( HackersFriend office BTM Layout)

View details