From fb773c089ff34a7a1a5daf6bcb4c374c0fca58ee Mon Sep 17 00:00:00 2001 From: Mainak Chakraborty Date: Wed, 18 Oct 2023 15:05:10 +0530 Subject: [PATCH] Added image_downloader.py --- web_image_downloader.py/image_downloader.py | 107 ++++++++++++++++++++ 1 file changed, 107 insertions(+) create mode 100644 web_image_downloader.py/image_downloader.py diff --git a/web_image_downloader.py/image_downloader.py b/web_image_downloader.py/image_downloader.py new file mode 100644 index 0000000..4cf2e30 --- /dev/null +++ b/web_image_downloader.py/image_downloader.py @@ -0,0 +1,107 @@ +#A simple python program to scrap and download jpg imaged form a web url. + +from bs4 import * +import requests +import os + +#Creating the folder +def folder_create(images): + try: + folder_name = input("[+] Enter folder name: ") + #creating folder + os.mkdir(folder_name) + except: + print("A folder exists with this name!") + folder_create() + + #start downloading images + download_images(images, folder_name) + +#Download all images from that url +def download_images(images, folder_name): + count = 0 + print(f"[+] Total {len(images)} images found!") + user_ch = input("[+] Do you want to continue (y/n)?") + if user_ch == 'y': + user_img_ch = int(input("How many images do you want to download (default 0 -> all): ")) + if user_img_ch == 0: + if len(images) != 0: + for i, image in enumerate(images): + try: + image_link = image["data-srcset"] + except: + try: + image_link = image["data-src"] + except: + try: + image_link = image["data-fallback-src"] + except: + try: + image_link = image["src"] + except: + pass + + try: + r = requests.get(image_link).content + try: + r = str(r, 'utf-8') + except UnicodeDecodeError: + with open(f"{folder_name}/images{i+1}.jpg", "wb+") as f: + f.write(r) + + count += 1 + + except: + pass + + if user_img_ch != 0 and user_img_ch <= len(images): + if len(images) != 0: + count_img = 0 + for i, image in enumerate(images): + try: + image_link = image["data-srcset"] + except: + try: + image_link = image["data-src"] + except: + try: + image_link = image["data-fallback-src"] + except: + try: + image_link = image["src"] + except: + pass + + try: + r = requests.get(image_link).content + try: + r = str(r, 'utf-8') + except UnicodeDecodeError: + with open(f"{folder_name}/images{i+1}.jpg", "wb+") as f: + f.write(r) + + except: + pass + + count_img += 1 + if(count_img == user_img_ch): + break + + if count == len(images): + print("All Images Downloaded!") + + # if all images not download + else: + print(f"Total {count} Images Downloaded Out of {len(images)}") + else: + print("[+] Thanks for visiting! Come back again.") + +def main(url): + r = requests.get(url) + soup = BeautifulSoup(r.text, 'html.parser') + images = soup.findAll('img') + folder_create(images) + +url = input("[+] Enter url: ") +main(url) + \ No newline at end of file