본문 바로가기
파이썬/파이썬

[ 파이썬 ] 캠핑장 예약 조회

by jeong-f 2021. 12. 24.
반응형

파이썬에서 URL 정보를 받아 예약 가능한 사이트만 조회하는 정보를 만들고자 합니다.
아래 순서로 데이터를 가져옵니다.

  1. 사이트 접속
  2. 데이터 프레임 변환
  3. 예약 가능한 사이트만 가져오기(데이터프레임 값 추출)
  4. 불필요한 열 삭제(데이터 프레임 열 삭제)

캠핑장 예약 정보 조회 순서

1. 사이트 접속

https://www.sj.go.kr/gumsu/page.do?mnu_uid=1850&csr_class=0&step=list&cs_uid=0&initYear=2021&initMonth=6&initDay=03 

2. 데이터 프레임으로 변환

사용할 데이터 프레임은 두 개가 검색되는데 2번째의 프레임을 사용합니다.

3. 예약 가능한 사이트 추출

예약하기가 예약 가능한 사이트는 문자가 "예약하기"입니다.

4. 불필요한 열인 "규모"를 삭제

사이트의 정보를 미리 알고 있으므로 "규모" 열을 삭제합니다.

소스 코드

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
'''
pip install urllib3
pip install pandas 
 
'''
 
import requests
import urllib3
import pandas as pd
 
#--------------------------------------------------------------------
def get_datataframe( initYear,initMonth,initDay,delNotBooking=True):
    
    urllib3.disable_warnings() # HTTPS 연결시 TLS 1.0 사용
    url = 'https://www.sj.go.kr/gumsu/page.do?mnu_uid=1850&csr_class=0&step=list&cs_uid=0'
    url += "&initYear=" +initYear
    url += "&initMonth=" +initMonth
    url += "&initDay=" +initDay
    print(url)
 
    # 웹페이지를 읽어 데이터 프레임으로 변환
    dfs = pd.read_html(url,encoding='utf-8')
 
    # 두번째 프레임(0부터시작)이 예약정보   
    df2= dfs[1]
    print(df2)
 
    #예약하기가 아니면 삭제
    if delNotBooking:
        condition = (df2.예약하기 == '예약하기')
        df2 = df2.loc[condition]
 
    # 불필요한 세번째 열(0 부터 시작) '규모(m2)' 삭제
    df2 = df2.drop(df2.columns[2],axis=1)
    print(df2)
 
    return df2
#--------------------------------------------------------------------
if __name__ == '__main__':
    get_datataframe('2021','6','03')
    system("pause")
cs
 

결과

위의 내용으로 보았을 때 73개 중 71개의 사이트가 예약 가능한 것으로 조회가 됩니다.

반응형

댓글