본문 바로가기

Programming/Python

파이썬으로 웹스크랩하는 법

반응형

1단계 pip 패키지 install

pip install beautifulsoup4

beautifulSoup 는 HTML과 XML 문서를 파이썬을 통해 쉽고 편리하게 읽도록 도와주는 라이브러리다. 태그와 속성을 통해서 요소에 접근하도록 한다.

 

pip install requests

웹페이지의 HTML 코드를  BeautifulSoup에 제공하기 위해서 requests 모듈이 필요하다.

 

pip install urllib

urllib는 URL을 가져와 제어하는 모듈이다. 

 


2단계 라이브러리 불러오기

다음은 인스톨한 패키지들을 다음 코드로 불러온다.

 

from bs4 import BeautifulSoup
import pandas as pd
import urllib.request,sys,time
import requests

 

여기에서

 

- urllib.sys : URL을 열 때 functions 과 class 를 정의하는데 도움을 준다.

- urllib.sys : 제외할 정보를 검색할 때 도움을 준다.

- urllib.time : 시간과 관련한 task를 할 때 도움을 준다.

- panda 는 스크랩한 데이터를 시각화 구조화하는 데이터 조작툴이다. 이 라이브러리를 사용해 데이터프레임을 만든다. 데이터프레임은 변수를 우리가 분석하기 쉬운 행열구조로 만들어준다.

 


3단계 HTML 요청하고 변수에 저장하기

request 모듈로 HTML 페이지를 불러오고, page라는 변수에 저장할 수 있다.

 

#우리가 가져오고 싶은 url
#파이썬은 대소문자를 구분하는 언어다. 잘확인하도록 하자.

URL = 'http://encykorea.aks.ac.kr/Contents/Item/E0024921'
page = requests.get(URL)

 


4단계 에러 확인하는 장치 만들기

 

#우리가 가져오고 싶은 url
#파이썬은 대소문자를 구분하는 언어다. 잘확인하도록 하자.

URL = 'https://www.politifact.com/factchecks/list/?page='+str(page)

try:
     # 뭔가가 잘못되면 예외라는 메시지를 보낸다고 한다.
     page=requests.get(URL) 
     # 아래와 같은 예외가 발생하면 제외시키라는 요청을 보내는 코드다. 
except Exception as e:    
    
    # 다음과 같은 정보
    error_type, error_obj, error_info = sys.exc_info()      
    
    #문제가 발생한 url을 나열한다.
    print ('ERROR FOR LINK:',URL)
    
    #에러 인포를 출력한다.                          
    print (error_type, 'Line:', error_info.tb_lineno)

5단계 서버 반응 확인하기

page.status_code

4XX, 5XX에 해당하는 오류를 확인하기에 좋은 코드다.

 

명령어를 입력했을 때, 200이라고 나오면 요청이 성공했다는 뜻이다.

 

 

page.text

HTML 페이지를 하나의 큰 스트링으로 가져온다. 유니코드 형식으로 가져온다.

 

이것을 대체하는 명령어로는

page.content

가 있는데, 이것은 바이트의 형태로 가져오게 된다.

 


6단계 request time delay

time 기능을 활용해서 정보를 불러오는 request 를 delay 시켜줘야 한다. 우리가 너무 많이 요청을 하게 되면, 해당 서버에 부담으로 작용하게 되고, 아이피가 차단당할 수 있기 때문이다.

 

time.sleep(2)

괄호 안의 숫자가 딜레이할 초를 나타낸다. 이 경우 2초를 잡았다.

 


7단계 HTML에서 내용 가져오기

이제 HTTP request도 했고, HTML 문서도 가져왔다. 그럼 이제, 분석을 통해서 우리가 원하는 데이터를 추출해야 한다.

 

여기에서 BeautifulSoup의 객체 soup를 활용한다.

BeautifulSoup는 HTML과 XML 파일에서 데이터를 가져오는 파이썬 라이브러리다. 자신이 원하는 파서를 통해 네비게이팅, 검색, 분석트리를 변경할 수 있다. 이 라이브러리는 개발자의 시간을 엄청나게 줄여준다.

 

soup = BeautifulSoup(page.text, "html.parser")

html 파서를 사용한다는 의미다.

 

 

웹사이트 검사하기.

웹페이지를 분석하기 위해서는 다음을 따라해보자.

1) 자신이 원하는 웹페이지로 들어간다.

 

2) Ctrl shift I 를 눌러 html코드를 볼 수 있다.

 

3) 

 

※ 업데이트 예정

반응형