Skip to content

Instantly share code, notes, and snippets.

@mrbkdad
Last active May 25, 2017 07:47
Show Gist options
  • Save mrbkdad/e66cba9294e9d11c97c42ad2251c9669 to your computer and use it in GitHub Desktop.
Save mrbkdad/e66cba9294e9d11c97c42ad2251c9669 to your computer and use it in GitHub Desktop.
웹 스크래핑 유형별 사례 분석
Display the source blob
Display the rendered blob
Raw
{
"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