시계열 데이터 분석을 위해 한국 공항공사에 있는 데이터를 수집하려고 한다
https://www.airport.co.kr/www/extra/stats/timeSeriesStats/layOut.do?menuId=399
한국공항공사에 가면 데이터를 엑셀형태로 받을 수 있지만 내가 원하는 형태로 불러오기 위해 크롤링을 하기로 했다.
한국공항공사 사이트에 들어가면 항공통계가 있는데 아래에 원하는 연도의 테이블을 크롤링 하는법에 대해 알려주려고 한다.
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를 이용해서 정적인 페이지에 테이블,표를 크롤링 했습니다.
'Data Analysis' 카테고리의 다른 글
[시계열] Box-Jenkins 방법을 이용한 ARIMA모형 (0) | 2020.06.17 |
---|---|
[크롤링]BeautifulSoup + selenium을 이용한 표 크롤링 (0) | 2020.06.17 |
[크롤링 오류]This version of ChromeDriver only supports Chrome version (1) | 2020.06.16 |
[시계열] 홀트의 선형지수평활법, Holt-winter의 계절지수평활법 (0) | 2020.04.22 |
[시계열] 단순이동평균과 단순지수평활법 (0) | 2020.04.22 |