프로그래밍/python
특정 사이트에서 이미지 추출 후 저장하기
마루의 일상
2024. 4. 24. 01:49
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
반응형