본문 바로가기
프로그래밍/python

특정 사이트에서 이미지 추출 후 저장하기

by 마루의 일상 2024. 4. 24.
728x90
반응형

Python을 사용하여 웹 페이지에서 이미지를 추출하는 과정은 다음과 같습니다.

import requests
from bs4 import BeautifulSoup
import os

# 웹 페이지 URL 설정
url = "https://www.hankookilbo.com/News/Read/A2024041907370004557?dtype=1&dtypecode=27a89bab-fdc3-498a-8332-7cd3c3e3f8e5&did=DA&prnewsid=A2024042310470001871"

# HTTP 요청 보내기
response = requests.get(url)

# 응답 확인
if response.status_code == 200:
    # BeautifulSoup을 사용하여 HTML 파싱
    soup = BeautifulSoup(response.text, 'html.parser')
    
    # 이미지 태그 찾기
    # .editor-img-box 클래스 안에 있는 이미지 태그 찾기
    img_tags = soup.find_all(class_='editor-img-box')
    
    # 이미지 다운로드 및 저장
    for img_box in img_tags:
        # 이미지 태그 찾기
        img = img_box.find('img')
        print(img)
        if img:
            img_url = img['src']
            # 이미지 파일명 추출
            img_name = os.path.basename(img_url)
            # 이미지 다운로드
            with open("images/"+img_name, 'wb') as img_file:
                img_response = requests.get(img_url)
                img_file.write(img_response.content)
    
    print("이미지 다운로드 완료")
else:
    print("페이지를 찾을 수 없습니다.")

 

위의 코드에서는 .editor-img-box 클래스를 가진 요소를 먼저 찾고, 그 안에서 이미지 태그를 찾아 이미지를 추출하고 저장합니다. 

눈물의 여왕 기사가 있길래 이미지를 다운로드 해봤습니다.

김지원 배우 너무 예쁘네요.

 

 

BeautifulSoup에서 태그를 찾는 여러 가지 방법을 정리해봤습니다.

1. find() 메서드

  • find() 메서드를 사용하여 문서에서 첫 번째로 일치하는 요소를 찾을 수 있습니다.
soup.find('태그명')
soup.find('태그명', 속성='값')
soup.find('태그명', class_='클래스명')

2. find_all() 메서드

  • find_all() 메서드를 사용하여 문서에서 모든 일치하는 요소를 찾을 수 있습니다.
soup.find_all('태그명')
soup.find_all('태그명', 속성='값')
soup.find_all('태그명', class_='클래스명')

3. 클래스로 요소 찾기

  • class_ 매개변수를 사용하여 클래스 이름으로 요소를 찾을 수 있습니다
soup.find_all(class_='클래스명')

 

위에 class_로 쓴이유는 파이썬의 예약어인 class와충돌하여 오류를 발생시킬수 있습니다.

따라서 BeautifulSoup에서는 class_라는 이름을 사용하여 클래스를 찾습니다.

 

4. id로 요소 찾기

  • id 속성을 사용하여 요소를 찾을 수 있습니다.
soup.find(id='아이디')

5. CSS 선택자로 요소 찾기

  • CSS 선택자를 사용하여 요소를 찾을 수 있습니다.
soup.select('CSS 선택자')

6. 부모-자식 관계로 요소 찾기

  • parent 속성을 사용하여 부모 요소를 찾을 수 있고, children 속성을 사용하여 자식 요소를 찾을 수 있습니다.
부모요소 = 자식요소.parent
자식요소들 = 부모요소.children

 

위의 방법들을 조합하여 원하는 요소를 찾을 수 있습니다. 

728x90
반응형