이번 글에서는 Python의 BeautifulSoup, requests 패키지를 이용하여, 가비아 라이브러리 홈페이지의 게시글들을 파싱하는 방법을 소개합니다. 들어가기 전본문으로 들어가기 전, 먼저 크롤링(Crawling), 파싱(Parsing), 스크래핑(Scraping)에 대한 정의를 알아보겠습니다.
크롤링은 웹 인덱싱을 위해 WWW를 체계적으로 탐색해나가는 것을 의미합니다. 크롤러가 하는 행위(WWW를 탐색해나가는 행위 등)를 바로 ‘크롤링’ 이라고 합니다.
웹 파싱은 웹 상의 자연어, 컴퓨터 언어 등의 일련의 문자열들을 분석하는 프로세스입니다.
웹 스크래핑은 다양한 웹사이트로부터 데이터를 추출하는 기술을 의미합니다. 정의를 살펴보면, 흔히 사용되는 용어 ‘크롤러’는 데이터 추출의 의미보다 웹 사이트를 탐색하고, 인덱싱 하는 것에 더 중점적인 의미를 갖고 있는 것 처럼 보입니다. 따라서 이번 글 에서는 ‘웹 크롤링’ 이라는 단어의 사용보다 ‘웹 파싱’ 이라는 단어를 사용하겠습니다. (각각의 용어에 대한 해석은 다를 수 있습니다.) 웹 파싱해보기파이썬에서 가장 많이 사용되고 있는 패키지 BeautifulSoup, Requests를 사용하여 웹 사이트를 파싱해보겠습니다. 1. BeautifulSoup, Requests 패키지가 설치되었는지 확인합니다.
목록에
BeautifulSoup: 웹 페이지의 정보를 쉽게 스크랩할 수 있도록 기능을 제공하는 라이브러리입니다. Requests: HTTP 요청을 보낼 수 있도록 기능을 제공하는 라이브러리 입니다. 2. 파싱을 진행할 페이지를 분석합니다.1. 가비아 라이브러리 홈페이지에 접속합니다. 2. 홈페이지에 접속하여 HTML 소스를 분석합니다. 크롬 브라우저 기준, HTML 소스를 살펴보면 게시글들의 제목, 링크, 날짜 등의 내용을 확인할 수 있습니다. 3. 파싱을 위해 파이썬 파일을 생성합니다.
4. 파싱을 위한 코드를 작성하고 실행시킵니다. 4-1. 가비아 라이브러리 홈페이지에 존재하는 포스터들의 제목을 추출해봅니다.
line 1 ~ 2: 필요한 라이브러리(requests, beautifulsoup)를 import
합니다. 아래와 같이 실행 결과를 확인할 수 있습니다.
4-2. 가비아 라이브러리 홈페이지에 존재하는 포스터들의 제목과 링크를 동시에 추출해봅니다.
line 7: esg-entry-content 클래스로 설정된 div 태그들의 하위에 존재하는 태그 중, eg-grant-element-0 클래스를 갖는 a 태그만을 추출합니다. 아래와 같이 실행 결과를 확인할 수 있습니다.
5. 파싱한 데이터를 활용해봅니다. 이번엔 Pandas, openpyxl 패키지를 이용하여 파싱한 데이터를 엑셀 형태로 변환해보겠습니다. 5-1. Pandas, openpyxl 패키지가 설치되어 있는지 확인합니다.
패키지가 설치되어 있지 않다면 설치해줍니다.
Pandas: 데이터를 쉽게 분석하고 조작할 수 있는 파이썬의 라이브러리입니다. 5-2. 위에서 작성한 코드를 아래와 같이 수정합니다.
line 3: pandas 라이브러리를 import합니다. 아래와 같이 생성된 엑셀 파일을 확인할 수 있습니다. 생성된 엑셀 파일지금까지 가비아 Python 호스팅 환경에서 가비아 라이브러리 홈페이지를 파싱하는 방법을 알아보았습니다. 가비아는 초보 개발자도 쉽게 호스팅 서비스를 이용할 수 있도록 최적화된 호스팅 환경을 제공합니다. 또한 CBT, OBT를 거쳐 검증된 컨테이너 기반의 환경에 Python 호스팅 서비스를 제공해 때문에 안정적이고, 믿을 수 있습니다. 가비아 Python 호스팅을 이용해 이번 포스팅과 같이 웹 파싱을 개발해 보시기 바랍니다. [가비아 Python 호스팅 알아보기] |