파이썬 python

파이썬 초보 프로젝트 크롤링 1편 - 웹 크롤링 시작 하는 방법

studying develop 2021. 8. 13. 22:49

 

크롤링을 하기 위해서는 크롤링 라이브러리인 beautifulsoup4가 필요합니다.

크롤링을 위해서 라이브러리가 꼭 필요하냐 하면 그렇지는 않습니다.

 

하지만 모듈을 사용하는 이유는 우리가 필요한 코드들, 예를 들면 원하는 사이트에 접속해서 웹페이지를 요청하고 이것을 받아와서 저장하는 과정을 이미 구현해 놓은 코드를 사용하기 위해서 입니다.

 

쉽게 생각하면 자주 공통적으로 사용되는 코드들은 이미 공개적으로 사용할 수 있도록 모듈화가 잘 되어있습니다.

 

 

 

 

 

터미널 영역에서 pip install requests beautifulsoup4를 입력해 필요한 모듈을 다운 받습니다.


from bs4 import BeautifulSoup
import requests

 

이제 파일에 필요한 라이브러리들을 호출합니다.

BeautifulSoup은 html 파일을 파싱하기 위한 목적으로 불러왔습니다.

requests는 네이버 서버에 html 파일을 요청하기 위해 사용합니다.

 


우리가 크롤링하려는 주소는 naver.com입니다.

headers는 무엇이냐면, 우리가 어떤 브라우저를 사용하고 있는지 등의 정보를 네이버 서버에 요청과 함께 넣어 전달합니다.

그 이유는 네이버 서버 컴퓨터에서는 헤더가 없는 요청은 불완전한 요청으로 보고 무시할 가능성이 있기 때문입니다.

 

그 다음에는 request.get을 이용해 네이버 서버에 html 파일에 대한 정보를 요청하고, 그에 대한 반환 값을 r에 저장합니다.

 

즉 urlString 주소로 headers를 넣어 요청한 결과를 r에 저장하는 것입니다.


그리고 r을 출력하면 아래와 같은 결과가 출력되고. r은 객체로 html 문서 파일에 대한 정보뿐 아니라, 우리가 한 요청에 대한 응답 정보도 포함합니다. 그것이 응답코드 200으로 아래 처럼 보이는 것입니다.

<Response [200]>

그럼이제 응답의 본 문서를 출력해봅시다.

html parser를 이용해 응답 r이 갖는 text를 파싱하는 것입니다.

그리고 파싱한 결과를 출력하면 아래와 같이 나타납니다.


일단 원하는 페이지 크롤링할 수 있는 코드.

추가로 정제가 필요하다.

 

파이참 기준 파일입니다.

from urllib.request import urlopen
from bs4 import BeautifulSoup
import requests
import ssl

def mainFunc():
    context = ssl._create_unverified_context()

    urlString = "https://news.naver.com"
    headers = {
        "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.88 Safari/537.36"
    }

    #html = urlopen(urlString, context=context)
    r = requests.get(urlString, headers=headers)

    print(r)

    bsObject = BeautifulSoup(r.text, "html.parser")
    print(bsObject)

# Press the green button in the gutter to run the script.
if __name__ == '__main__':
    mainFunc()

# See PyCharm help at https://www.jetbrains.com/help/pycharm/