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
반응형
'프로그래밍 > python' 카테고리의 다른 글
PyQt5를 사용하여 간단한 창을 띄우는 프로그램 만들기 (0) | 2024.04.30 |
---|---|
파이썬 GUI 프로그램 만들기 PyQt5 설치 (0) | 2024.04.29 |
파이썬 네이버 뉴스의 IT/과학 헤드라인 뉴스 크롤링 후 출력 (0) | 2024.04.23 |
파이썬 오류 ModuleNotFoundError No module named 'html.entities'; 'html' is not a package (0) | 2024.04.23 |
파이썬에서 MySQL 데이터베이스 다루기: Insert, Update, Delete (0) | 2024.04.19 |