상세 컨텐츠

본문 제목

<Python> : : 웹 사이트 크롤링(crawling)하는 방법

프로그래밍

by 스터디올 2020. 3. 30. 21:02

본문

반응형

1. 웹 크롤링이란 웹사이트 html에서 필요한 정보를 데이터베이스로 수집해 오는 작업이다.

 

2. BeautifulSoup 라는 Library를 이용해 쉽게 크롤링을 할 수 있다.

 

 

1. 웹 크롤링이랑 웹사이트(html)에서 필요한 정보를 데이터 베이스로 수집해 오는 작업이다.

정의는 개인적으로 한 것이므로 달라질 수 있다. 모든 웹사이트는 html로 구성되어 있다.

각 웹사이트의 html은"F12" 버튼을 통해 확인 할 수 있다.

 

크롤링을 통해 웹사이트에 원하는 데이터를 가져오기 위해서 html을 이용한다. html은 웹사이트의 모든 data들이 있기 때문에 text로 받아서 내가 원하는 data를 추출할 수 있다.

 

2. BeautifulSoup 라는 Library를 이용해 쉽게 크롤링을 할 수 있다.

1) requests 와 BeautifulSoup Library를 import한다.

import requests
from bs4 import BeautifulSoup

2) requests Library에서 get이라는 function을 통해 html 정보를 class에 받는다.

URL = "https://finance.yahoo.com/quote/O/history?p=O"
req = requests.get(URL)
print(type(req))

==> 결과는

<class 'requests.models.Response'>

이다. 따라서 req는 단순이 class 일뿐이다.

 

해당 class에 들어가서 살펴보면

사진 설명을 입력하세요.

다음과 같은 코드를 확인 할 수 있고 text라는 function을 쓰면 str로 변환해 주는 것을 추측할 수 있다.

 

3) 위에 class에서 html 정보를 text로 변환시켜 준다.

html = req.text
print(type(html))

 

==> 결과는

<class 'str'>

이다. 나는 string인 줄 알았는데 지금 보니 앞에 class가 붙어있다. 해당 Library에서 정의한 건가 하는 생각도 있다.

 

4) BeautifulSoup를 통해 html data를 해석한다.

soup = BeautifulSoup(html, "lsml")
print(type(soup))

html은 html data이다. "lsml"은 data를 어떤 형식으로 해석할지이다.

==> 결과는

<class 'bs4.BeautifulSoup'>

이다.

 

 

5) prettify를 통해 유니코드을 return 해 줄 수 있다.

유니코드가 무엇인지 정확한 의미가 와닿지 않지만 출력했을 때 들여쓰기가 되어 있다. html 코드를 보기 좋게 만들 어주는 기능을 하고 있다고 알아두면 될 것 같다.

print(soup.prettify())

==> 결과는

<html>

   ...

   ...

   ...

</html>

같이 출력 된다. 

 

 

반응형

관련글 더보기

댓글 영역