안녕하세요. 언제나휴일입니다.
빅데이터의 주요 작업에는 수집, 저장, 처리, 분석 등이 있어요.
이 중에서 웹 페이지 수집하는 방법을 알아봅시다.
1. 사용할 라이브러리
웹 페이지를 요청하여 얻어올 때 urllib.request를 사용합니다. urllib.request를 축약하여 ureq로 부를게요.
수집한 웹 페이지를 분석할 때 BeautifulSoup을 사용합니다.
import urllib.request as ureq from bs4 import BeautifulSoup
2. 요청한 주소의 웹 페이지 수집하는 함수 작성하기
def Collect(url):
ureq(urllib.request)에 있는 Request 개체를 생성합니다. Request 개체는 웹 페이지를 요청하는 개체입니다.
request = ureq.Request(url)
ureq의 urlopen 메서드에 request(Request 개체를 참조한 변수)를 전달하면 웹 페이지를 요청합니다. 요청한 결과는 반환 값으로 돌려줍니다.
response = ureq.urlopen(request)
요청 결과(response)의 성공 유무를 확인할 때 getcode 메서드를 호출하세요. 반환 값이 200이면 성공입니다. 성공하면 요청 결과를 반환하고 실패하면 None을 반환합시다.
if response.getcode()!=200: return None else: return response
3. Collect 함수를 호출하여 웹 페이지 수집 예
사용자로부터 수집할 URL을 입력받아 Collect 함수를 호출합니다.
url = input("수집할 URL:") result = Collect(url)
Collect 결과를 BeautifulSoup 개체 생성 인자에 전달합니다. BeautifulSoup 개체는 Html 문서 내용을 분석하기 쉽게 해 줍니다.
html = BeautifulSoup(result,'html.parser')
웹 페이지 제목을 얻어올 때는 html(BeautifulSoup 개체)의 title.text를 통해 얻어올 수 있어요.
웹 페이지 내용은 html.text를 통해 얻어올 수 있어요.
print("제목:",html.title.text) print("내용:") print(html.text)
4. 전체 코드
import urllib.request as ureq from bs4 import BeautifulSoup def Collect(url): request = ureq.Request(url) response = ureq.urlopen(request) if response.getcode()!=200: return None else: return response url = input("수집할 URL:") result = Collect(url) html = BeautifulSoup(result,'html.parser') print("제목:",html.title.text) print("내용:") print(html.text)