[빅데이터 python] 웹 페이지 수집하기

안녕하세요. 언제나휴일입니다.

빅데이터의 주요 작업에는 수집, 저장, 처리, 분석 등이 있어요.

이 중에서 웹 페이지 수집하는 방법을 알아봅시다.

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)