위키피디아에서 원하는 정보 가져오기
이번 수업에서는 파이썬을 사용해 위키피디아의 '인터넷' 페이지에서 데이터를 크롤링하는 방법을 알아보겠습니다.
특히 페이지의 제목과 본문에서 특정 단락들을 추출하고, 한글 데이터를 올바르게 처리하는 방법을 배웁니다.
웹 페이지 가져오기
먼저, requests 패키지를 사용해 위키피디아의 '인터넷' 페이지를 가져옵니다.
requests.get() 메서드를 사용해 해당 페이지의 HTML 소스를 불러옵니다.
import requests # URL 설정 url = 'https://ko.wikipedia.org/wiki/인터넷' # 웹 페이지 가져오기 response = requests.get(url) # 응답 상태 코드 확인 print("status_code:", response.status_code)
-
url변수에 크롤링할 페이지의 주소를 저장합니다. -
requests.get(url)은 해당 URL의 HTML 소스를 가져옵니다. -
response.status_code는 요청이 성공했는지 확인하는 데 사용됩니다. 상태 코드 200은 요청이 성공했음을 의미합니다.
HTML 파싱 및 제목 추출
HTML을 파싱하고, 페이지의 제목을 추출합니다.
BeautifulSoup을 사용해 HTML 구조를 분석합니다.
from bs4 import BeautifulSoup # HTML 파싱 soup = BeautifulSoup(response.text, 'html.parser') # 페이지 제목 가져오기 title = soup.find('h1', id='firstHeading').text print("title:", title)
-
BeautifulSoup(response.text, 'html.parser')는 HTML 소스를 파싱합니다. -
soup.find('h1', id='firstHeading').text는 페이지의 제목을 추출합니다.
본문 내용 추출
이제 본문 내용에서 <p> 태그를 모두 가져와, 그 중 첫 5개의 단락을 추출합니다.
# 본문 내용 중 <p> 태그들 모두 가져오기 all_paragraphs = soup.find('div', class_='mw-parser-output').find_all('p') # 첫 5개의 <p> 태그만 선택하기 paragraphs = all_paragraphs[:5] # 추출한 단락들을 하나의 텍스트로 합치기 content = "\n".join([p.text for p in paragraphs])
-
soup.find('div', class_='mw-parser-output').find_all('p')는 본문 내 모든<p>태그를 가져옵니다. -
paragraphs = all_paragraphs[:5]는 첫 5개의<p>태그만 선택합니다. -
"\n".join([p.text for p in paragraphs])는 선택한 단락들을 하나의 텍스트로 합칩니다.
한글 인코딩 문제 해결 및 출력
크롤링한 한글 데이터를 제대로 출력하기 위해 인코딩(Encoding, 문자열을 바이트로 변환) 문제를 해결합니다.
# 한글 인코딩 문제 해결 print("content:", content.encode('utf-8').decode('utf-8'))
content.encode('utf-8').decode('utf-8')는 출력되는 한글 데이터가 제대로 출력되도록 합니다.
인코딩(encode)는 문자열을 바이트(byte, 0과 1로 이루어진 데이터)로 변환하고, 디코딩(decode)은 바이트를 문자열로 변환합니다.
이제 코드를 실행하면 위키피디아 '인터넷' 페이지의 제목과 본문 내용이 출력됩니다.
이 챕터의 강의 · 웹 크롤링으로 스마트하게 데이터 수집하기
- 1. 반복적으로 데이터를 수집하는 웹 크롤링
- 2. 웹 크롤링을 시 유의해야 할 고려사항
- 3. 웹 크롤링을 위한 HTML 필수 지식
- 4. 웹 크롤링을 위한 CSS 필수 지식
- 5. 웹 크롤링을 위한 HTTP 필수 지식
- 6. requests 패키지로 웹 페이지 데이터 수집하기
- 7. BeautifulSoup을 이용한 HTML 파싱
- 8. BeautifulSoup 주요 메서드와 활용법
- 9. 크롤링에 필요한 정규 표현식
- 10. 위키피디아에서 원하는 정보 가져오기
- 11. 빈칸 채우기 퀴즈
- 12. JavaScript와 동적 웹 크롤링
- 13. 기본적인 Selenium 메서드와 활용법
- 14. 자주 사용하는 Selenium 메서드
- 15. 실무에 적용되는 Selenium 활용 예시
- 16. Selenium으로 미국 주가 지수 크롤링하기
- 17. 선택형 퀴즈
- 18. 코딩 퀴즈 - 웹 크롤링 실습
아래 빈칸에 들어갈 가장 적절한 내용은 무엇일까요?
학습 자료
AI 튜터
디자인
업로드
수업 노트
즐겨찾기
도움말