융무의 기술블로그
article thumbnail

시계열 데이터 분석을 위해 한국 공항공사에 있는 데이터를 수집하려고 한다

https://www.airport.co.kr/www/extra/stats/timeSeriesStats/layOut.do?menuId=399

 

시계열 통계 : 항공통계 : 고객센터 : KAC 한국공항공사

해당 월 통계자료는 익월 업무일 기준 5일 이후 공표

www.airport.co.kr

한국공항공사에 가면 데이터를 엑셀형태로 받을 수 있지만 내가 원하는 형태로 불러오기 위해 크롤링을 하기로 했다.

한국공항공사 사이트에 들어가면 항공통계가 있는데 아래에 원하는 연도의 테이블을 크롤링 하는법에 대해 알려주려고 한다.

 

Solution                                                                                                                    

BeautifulSoup 라이브러리는 정적인 페이지에 주로 사용되는데 여기서는 2000.01~2000.12까지의 데이터를 불러오려고 한다.

from urllib.request import urlopen
from bs4 import BeautifulSoup
from html_table_parser import parser_functions as parser

뭔저 필요한 패키지를 불러온 다음에 url 주소를 입력해준다.

url = "https://www.airport.co.kr/www/extra/stats/timeSeriesStats/layOut.do?menuId=399&strType=month&strStYear=2000&strStMonth=01&strEnYear=2019&strEnMonth=12&strAirPort=ALL&strLine=&strRegular=&strUse=&strPassengerType=ALL&strCargoType=ALL"

 

그 다음 BBeautifulSoup 라이브러리를 이용하여 html 문서를 가져온다.

result = urlopen(url)
html = result.read()
soup = BeautifulSoup(html, 'html.parser')

즉 검사를 통해 아래에 있는 html을 불러들어온거다.

 

soup을 확인해보면 html이 있는것을 알 수 있다.

soup

find_all 을 이용해서 화면에 태그된 부분, 즉 table에 관련된 부분만 가져옵니다.

temp = soup.find_all('table')
print(temp)

parser_functions에 있는 make2d를 이용해서 table 안에 있는 텍스트들을 불러옵니다

p = parser.make2d(temp[1])
print(p)

pandas에 있는 DataFrame을 이용하여 데이터 프레임 형태로 만들어줍니다.

import pandas as pd
df=pd.DataFrame(p[2:],columns=p[0])

 

이렇게 BeautifulSoup과 html_table_parser를 이용해서 정적인 페이지에 테이블,표를 크롤링 했습니다.

 

profile

융무의 기술블로그

@융무

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!