728x90
파이썬
웹 페이지 내 모든 img를 로컬 폴더에 저장할 필요가 있을분에게 추천드리는 코드입니다.
Python BS4(BeautifulSoup)와 Request 그리고 이미지처리를 위해 Image 라이브러리를 사용하였습니다.
url = "https://dev-guardy.tistory.com/"
save_folder = "dev-guardy"
if not os.path.exists(save_folder):
os.makedirs(save_folder)
이미지를 저장할 폴더를 만들어주고
response = requests.get(url)
soup = BeautifulSoup(response.text, 'html.parser')
img_tags = soup.find_all('img')
Response Text를 Soup를 이용하여 image Tag들만 뽑습니다.
for index, img_tag in enumerate(img_tags):
img_url = img_tag.get('src')
if img_url != None:
if img_url[:4] != 'http':
img_url = 'http:' + img_url
print(img_url)
img_response = requests.get(img_url)
img = Image.open(BytesIO(img_response.content))
img_name = os.path.join(save_folder, str(index) + '.png')
img.save(img_name)
print(f"Saved image: {img_name} (Height: {img.height})")
그 다음 img tag를 돌면서 src를 가져온뒤, 가끔 None인 경우가 있어서 if문으로 예외처리하고,
http나 https가 src로 가져올때 빠지는 경우가 있어 img_url의 앞 4글자를 가져와서 http가 아닌경우 붙여주는 코드를 작성하였습니다.
마지막으로 img_url을 다시 request하여 해당 response content를 image 라이브러리를 이용하여 저장해주면 완료입니다.
전체 코드는 다음과 같습니다.
import os
import requests
from bs4 import BeautifulSoup
from PIL import Image
from io import BytesIO
url = "https://dev-guardy.tistory.com/"
save_folder = "dev-guardy"
if not os.path.exists(save_folder):
os.makedirs(save_folder)
response = requests.get(url)
soup = BeautifulSoup(response.text, 'html.parser')
img_tags = soup.find_all('img')
for index, img_tag in enumerate(img_tags):
img_url = img_tag.get('src')
if img_url != None:
if img_url[:4] != 'http':
img_url = 'http:' + img_url
print(img_url)
img_response = requests.get(img_url)
img = Image.open(BytesIO(img_response.content))
img_name = os.path.join(save_folder, str(index) + '.png')
img.save(img_name)
print(f"Saved image: {img_name} (Height: {img.height})")
도움이 되셨다면 공감 및 댓글 부탁드립니다.
728x90
'ETC > Python' 카테고리의 다른 글
네이버 증권 파이썬(Python)을 이용하여 주식 정보 크롤링하기(Request, BeautifulSoup) 1편 (2) | 2024.10.28 |
---|---|
파이썬 UUID 생성(uuid) 방법 How to generate uuid in python code (0) | 2024.10.22 |
CryptoJS AES Encrypt Python Version (2) | 2024.10.16 |
Python으로 네이버 주식 현재가 가져오기 (0) | 2021.09.06 |
[Python] 파이썬 엑셀 읽기, 쓰기 + xlrd not supported error 해결방법 (1) | 2021.02.21 |