[python] crawler (공공데이터포털_여객터미널실시간 운항정보_XML)

2021. 5. 1. 23:18Python/코딩

Ver. Jupyter Notebook (Anaconda3)

▶ crawler_공공데이터포털_여객터미널실시간 운항정보_XML

# 공공데이터 이용 방법
  1. 공공데이터포털 (http://data.go.kr)
  2. 필요한 데이터 검색
  3. 활용신청
  4. 참고문서.docx 참고하여 작성

# 요청url = 'http:서버에 요청하는 주소?요청변수(parameters)'

# .docx파일의 항목구분 : 1은 필수 0은 선택

코딩: github

 

JeongJaeyoung0/crawler

Contribute to JeongJaeyoung0/crawler development by creating an account on GitHub.

github.com

2021.05.10

# "백령도" 관련 여객정보 가져오기

pwd

### Step 0. 준비
import requests  # 서버로 요청을 보내서 응답(데이터)을 받는 라이브러리
import xmltodict # xml 데이터를 dictionary로 변환해줌

### step1. "url? + parameter(api_key)" 정의하기
# "url" 입력
url = "https://opendata.icpa.or.kr/OpenAPI/service/ipaFerryNavigatInfo/getDmstcNvgList" 

# 서비스키(api인증키) 디코딩(unquote)
api_key = "Encoding" or "Decoding"
api_key_decode = requests.utils.unquote(api_key)
api_key_decode

# 파라미터 참고 : OpenAPI활용가이드
parameters = {"ServiceKey":api_key_decode, "numOfROws":10, "pageNo":1}
parameters

### step2. xml 데이터 확보
# get메소드(url, parameter 입력)로 xml 데이터 가져오기
req = requests.get(url, params = parameters)
req.text # -> xml 데이터 확보

# 가져온 xml 데이터를 dictionary 형태로 바꾸기(xmltodict 이용)
xml_data = xmltodict.parse(req.text)
xml_data

### step3. xml 데이터에서 내용만 추출
informations = xml_data['GetDmstcNvgListResponse']['body']['item']['GetDmstcNvgListVO']

print(len(informations))
print(type(informations))
informations

### step4. 필요한 정보만 추출
data = informations[0]['alocname']
data

# "백령도" 관련된 정보만 가져오기
for data in informations:
    if data['alocname'] == '백령도':
        print("기항지명: {}".format(data['alocname']))
        print("인천항 출발시간: {}".format(data['starttime']))
        print("기항지 도착시간: {}".format(data['alocarvltime']))
        print("기항지 출발시간: {}".format(data['alocstarttime']))
        print("인천항 도착시간: {}".format(data['arvltime']))
        print("운항정보: {}".format(data['nvginfoname']))
        print("항로명: {}".format(data['ruteName']))
        print("선명: {}".format(data['shipname']))
        print("선사명: {}".format(data['wtorcmpname']))
        print("")