가이드라인

위키피디아에서 원하는 정보 가져오기

이번 수업에서는 파이썬을 사용해 위키피디아의 '인터넷' 페이지에서 데이터를 크롤링하는 방법을 알아보겠습니다.

특히, 페이지의 제목과 본문에서 특정 단락들을 추출하고, 한글 데이터를 올바르게 처리하는 방법을 배웁니다.


웹 페이지 가져오기

먼저, 위키피디아의 '인터넷' 페이지를 가져옵니다.
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 구조를 분석합니다.

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])는 선택한 단락들을 하나의 텍스트로 합칩니다.


한글 인코딩 문제 해결 및 출력

크롤링한 한글 데이터를 제대로 출력하기 위해 인코딩 문제를 해결합니다.

한글 인코딩 문제 해결
# 한글 인코딩 문제 해결 print("content:", content.encode('utf-8').decode('utf-8'))
  • content.encode('utf-8').decode('utf-8')는 출력되는 한글 데이터가 제대로 출력되도록 합니다. 인코딩(encode)는 문자열을 바이트(byte, 0과 1로 이루어진 데이터)로 변환하고, 디코딩(decode)은 바이트를 문자열로 변환합니다.

이제 코드를 실행하면 위키피디아 '인터넷' 페이지의 제목과 본문 내용이 출력됩니다.

전체 코드

위키피디아에서 원하는 정보 가져오기
import requests from bs4 import BeautifulSoup # URL 설정 url = 'https://ko.wikipedia.org/wiki/인터넷' # 웹 페이지 가져오기 response = requests.get(url) # 응답 상태 코드 확인 print("status_code:", response.status_code) # HTML 파싱 soup = BeautifulSoup(response.text, 'html.parser') # 페이지 제목 가져오기 title = soup.find('h1', id='firstHeading').text print("title:", title) # 본문 내용 중 <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]) # 한글 인코딩 문제 해결 print("content:", content.encode('utf-8').decode('utf-8'))
Mission
0 / 1

아래 빈칸에 들어갈 가장 적절한 내용은 무엇일까요?

은 특정 URL의 HTML 소스를 불러올 때 사용합니다.
requests.get()
BeautifulSoup()
urllib.request()
selenium.webdriver()

가이드라인

AI 튜터

배포

디자인

업로드

수업 노트

즐겨찾기

도움말

코드 에디터

코드 실행
코드 생성

실행 결과