Last active
May 25, 2017 07:47
-
-
Save mrbkdad/e66cba9294e9d11c97c42ad2251c9669 to your computer and use it in GitHub Desktop.
웹 스크래핑 유형별 사례 분석
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
{ | |
"cells": [ | |
{ | |
"cell_type": "markdown", | |
"metadata": { | |
"deletable": true, | |
"editable": true, | |
"slideshow": { | |
"slide_type": "slide" | |
} | |
}, | |
"source": [ | |
"## 금융 데이터 수집과 분석 자동화 CAMP 6기\n", | |
"\n", | |
"# 웹스크랩 유형별 비교 \n", | |
"\n", | |
"\n", | |
"<img width=\"320\" src=\"http://covers.oreilly.com/images/9781491910290/cat.gif\" >\n", | |
"\n", | |
"#### 2017 박종욱 park363@daum.net" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": { | |
"deletable": true, | |
"editable": true, | |
"slideshow": { | |
"slide_type": "slide" | |
} | |
}, | |
"source": [ | |
"# Overview\n", | |
"* 항공사 웹 스크래핑을 이용하여 각 항공사와 실시간 항공 가격 정보 제공 사이트의 가격 정보를 분석하는 시스템을 만드는 과정에서 경험한 다양한 케이스의 사이트중 몇가지 사례 공유\n", | |
"\n", | |
"* 크롤링 대상 : 국내/외 항공사, 주요 항공 가격 정보 제공 사이트(국내 : 인터파크, 웹투어, 하나투어등, 국제 : 스카이스캐너, 시트립등)\n", | |
"* 스크래핑 대상 : 크롤링 시점의 각 플라이트별 가격 정보, 출도착 시간, 판매가능 좌석수, 유류세, 공항세등 세금, 플라이트 번호 등\n", | |
"\n", | |
"* 개발 진행 현황\n", | |
" - 국내 항공사, 국내 가격 정보 사이트 크롤링/스크래핑 테스트 완료, 국제 사이트 분석 예정\n", | |
" - 시각화를 위한 D3 테스트중, 플라스크를 이용한 정보 제공 사이트 개발중\n", | |
" - 사이트 개발전 매일 아침 배치작업을 통한 메일링 형태로 정보 제공 예정" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": { | |
"deletable": true, | |
"editable": true, | |
"slideshow": { | |
"slide_type": "slide" | |
} | |
}, | |
"source": [ | |
"# Sample Site\n", | |
"* 인터파크 실시간 항공권 예매 사이트\n", | |
"* 티웨이 항공권 예매 사이트\n", | |
"* 제주항공 항공권 예매 사이트\n", | |
"* 진에어 항공권 예매 사이트(국제선)\n", | |
"* 대한항공 항공권 예매 사이트" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": { | |
"deletable": true, | |
"editable": true, | |
"slideshow": { | |
"slide_type": "slide" | |
} | |
}, | |
"source": [ | |
"# 인터파크\n", | |
"- 국내선(국제선) 예매 사이트 : http://domair.interpark.com/api/booking/airJourney.do\n", | |
" (http://air.interpark.com/booking/SimpleSearch.html)\n", | |
" * requests 사용, 데이터 JSON\n", | |
" * JSON 데이터 수집, flatten_dict 활용\n", | |
"\n", | |
"https://nbviewer.jupyter.org/gist/mrbkdad/90b1691b55c9e06c01258516ec656101" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": { | |
"deletable": true, | |
"editable": true, | |
"slideshow": { | |
"slide_type": "slide" | |
} | |
}, | |
"source": [ | |
"# 티웨이\n", | |
"- 항공권 예매 사이트 : https://www.twayair.com/booking/availabilityList.do\n", | |
" * requests Session 사용, 데이터 Html\n", | |
" + 예매 사이트 1차 접속 Session 생성\n", | |
" + 정보 사이트 2차 접속 데이터 읽어오기 : https://www.twayair.com/booking/ajax/searchAvailability.do\n", | |
" + Html 데이터 수집을 위해 BeautifulSoup 이용\n", | |
" \n", | |
"https://nbviewer.jupyter.org/gist/mrbkdad/85acb2e8d43f4e2e8a82703a315cdd4a" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": { | |
"deletable": true, | |
"editable": true, | |
"slideshow": { | |
"slide_type": "slide" | |
} | |
}, | |
"source": [ | |
"# 제주항공\n", | |
"- 항공권 예매 사이트 : https://www.jejuair.net/jejuair/com/jeju/ibe/availInit.do\n", | |
" * request Session 사용, 데이터 JSON\n", | |
" + 예매 사이트 1차 접속 Session 생성\n", | |
" + 정보 사이트 2차 접속 데이터 읽어오기 : https://www.jejuair.net/jejuair/com/jeju/ibe/searchAvail.do\n", | |
" + Json 데이터 수집" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": { | |
"deletable": true, | |
"editable": true, | |
"slideshow": { | |
"slide_type": "slide" | |
} | |
}, | |
"source": [ | |
"# 진에어\n", | |
"- 국제선 항공권 예매 사이트 : https://www.jinair.com/bookflight/flightSearch.aspx\n", | |
" * request Session 사용, 데이터 자바스크립트내의 JSON 데이터 추출\n", | |
" + 예매사이트 접속 -> viewstate 체크 -> 사이트 팝업, 내부 데이터 처리 ....\n", | |
" + aspx .net\n", | |
" \n", | |
"https://nbviewer.jupyter.org/gist/mrbkdad/ea33461fe2c0b6a97e2083659be051d1" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": { | |
"deletable": true, | |
"editable": true, | |
"slideshow": { | |
"slide_type": "slide" | |
} | |
}, | |
"source": [ | |
"# 대한항공\n", | |
"- 항공권 예매 사이트 : https://www.koreanair.com/korea/ko/booking/booking-gate.html\n", | |
" * Request Session 사용, 데이터 JSON\n", | |
" + 예매 사이트 1차 접속 session 생성\n", | |
" + 정보를 읽어올 URL 생성 : https://www.koreanair.com/api/fly/revenue/from/{출발지}/to/{도착지}/on/{출발일}-0000\n", | |
" + 정보 사이트 2차 접속 데이터 읽어오기\n", | |
" + 헤더 정보 처리 중요\n", | |
" + 영문사이트 캡차 적용\n", | |
" \n", | |
"https://nbviewer.jupyter.org/gist/mrbkdad/6b8370e649ce2340fe36a12748dd22ff" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": { | |
"deletable": true, | |
"editable": true, | |
"slideshow": { | |
"slide_type": "slide" | |
} | |
}, | |
"source": [ | |
"# 그외\n", | |
"\n", | |
"* 대한항공 국제선\n", | |
"* CTrip" | |
] | |
} | |
], | |
"metadata": { | |
"celltoolbar": "Slideshow", | |
"kernelspec": { | |
"display_name": "Python 3", | |
"language": "python", | |
"name": "python3" | |
}, | |
"language_info": { | |
"codemirror_mode": { | |
"name": "ipython", | |
"version": 3 | |
}, | |
"file_extension": ".py", | |
"mimetype": "text/x-python", | |
"name": "python", | |
"nbconvert_exporter": "python", | |
"pygments_lexer": "ipython3", | |
"version": "3.5.3" | |
} | |
}, | |
"nbformat": 4, | |
"nbformat_minor": 0 | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment