BeautifulSoup을 이용한 HTML 파싱
웹 크롤링으로 원하는 정보를 얻기 위해서는, 수집한 HTML 데이터에서 원하는 정보를 추출해야 합니다.
BeautifulSoup
은 이러한 작업을 쉽게 해결할 수 있도록 돕는 파이썬 패키지로, requests로 가져온 HTML 데이터를 파싱
(Parsing, 구문 분석을 통한 데이터 추출)하는 데 사용됩니다.
HTML 데이터를 파싱하고 필요한 정보 추출하기
BeautifulSoup을 사용하면 HTML 문서를 파이썬 객체로 변환하여, 문서의 각 요소를 파이썬 코드로 간편하게 탐색하고 조작할 수 있습니다.
지금부터 BeautifulSoup을 사용해 HTML 데이터를 파싱
하고, 필요한 정보를 추출하는 방법을 살펴보겠습니다.
BeautifulSoup으로 HTML 파싱하기
먼저, 웹 페이지에서 가져온 HTML 데이터를 BeautifulSoup 객체로 변환해야 합니다.
아래와 같이 requests
패키지를 사용해 HTML 데이터를 가져온 후, BeautifulSoup
객체를 생성하여 HTML을 파싱할 수 있습니다.
import requests from bs4 import BeautifulSoup # 요청할 URL url = 'https://www.codefriends.net' # GET 요청으로 HTML 데이터 가져오기 response = requests.get(url) # BeautifulSoup 객체 생성 및 HTML 파싱 soup = BeautifulSoup(response.text, 'html.parser') # HTML의 제목(tag) 추출하기 title = soup.title.text # 페이지 제목 출력 print(f"Page Title: {title}")
위 코드는 soup
변수에 HTML 데이터를 파싱한 BeautifulSoup 객체를 저장하고, soup.title.text
를 통해 HTML 문서의 제목을 추출합니다.
soup.title
코드는 HTML 문서의 <title>
태그 내용을 가져오며, .text
는 해당 태그의 텍스트를 추출합니다.
필요한 정보 추출하기
정보를 추출할 때는 아래와 같이 다양한 방법을 사용할 수 있습니다.
- 태그 이름으로 요소 찾기: HTML 문서에서 특정 태그를 찾습니다.
# 모든 <a> 태그 찾기 links = soup.find_all('a') # 모든 링크 출력 for link in links: print(link.get('href'))
- 클래스 이름으로 요소 찾기: 특정 클래스 이름을 가진 요소를 찾을 수 있습니다.
# class="example"인 모든 <div> 태그 찾기 divs = soup.find_all('div', class_='example') # 모든 <div> 태그의 텍스트 출력 for div in divs: print(div.text)
- ID로 요소 찾기: 특정 ID를 가진 요소를 찾을 수 있습니다.
# id="main-content"인 요소 찾기 main_content = soup.find(id='main-content') # 선택된 요소의 텍스트 출력 print(main_content.text)
웹 페이지에서 기사 제목과 링크 추출하기
아래는 실제 웹 페이지에서 기사 제목과 링크를 추출하는 예시입니다:
import requests from bs4 import BeautifulSoup # 추출할 웹 페이지 URL url = 'https://news.ycombinator.com/' # GET 요청으로 HTML 데이터 가져오기 response = requests.get(url) # BeautifulSoup 객체 생성 및 HTML 파싱 soup = BeautifulSoup(response.text, 'html.parser') # 모든 기사 제목과 링크 추출 articles = soup.find_all('a') # 기사 제목과 링크 출력 for article in articles: # 기사 제목과 링크 추출 title = article.text # 링크 URL link = article.get('href') # 제목과 링크 출력 print(f"Title: {title}, Link: {link}")
위 코드는 YCombinator 뉴스 페이지에서 a 태그를 찾아 기사 제목과 링크를 추출합니다.
이처럼 BeautifulSoup을 사용하면 웹 페이지의 구조를 분석해 원하는 데이터를 쉽게 추출할 수 있습니다.
아래 빈칸에 들어갈 가장 적절한 메서드는 무엇일까요?
가이드라인
AI 튜터
배포
디자인
업로드
수업 노트
즐겨찾기
도움말
코드 에디터
실행 결과