반응형
버스정류장 정보를 가져올 일이 있어서 data.go.kr에 가입하고 해당 정보 사용 신청후 서비스용키를 받아서 간단히 구현하였다.
전국 시도, 시군구 코드를 미리 배열로 만들어 순차 대입해서 csv파일로 저장했다.
필요한 라이브러리를 임포트하고
import requests
import json
import csv
response = requests.get(url)
data = response.json()
request 객체를 사용해서 url로 정보를 가져와 response로 저장하고 json()매서드로 json데이터를 받아서 원하는 위치의 데이터를 잘라내어 csv로 전환한다.
import requests
import json
import csv
all_links = [
'12',
'22',
'23',
'24',
'25',
'26',
'39',
'31010',
'31020',
'31030',
'31040',
'31050',
'31060',
'31070',
'31080',
'31090',
'31100',
'31110',
'31120',
'31130',
'31140',
'31150',
'31160',
'31170',
'31180',
'31190',
'31200',
'31210',
'31220',
'31230',
'31240',
'31250',
'31260',
'31270',
'31320',
'31350',
'31370',
'31380',
'32010',
'32020',
'32040',
'32050',
'32060',
'32310',
'32330',
'32360',
'32370',
'32380',
'32390',
'32400',
'32410',
'33010',
'33020',
'33030',
'33320',
'33330',
'33340',
'33350',
'33360',
'33370',
'33380',
'34010',
'34020',
'34040',
'34050',
'34060',
'34070',
'34330',
'34390',
'35010',
'35020',
'35030',
'35040',
'35050',
'35060',
'35320',
'35330',
'35340',
'35350',
'35360',
'35370',
'35380',
'36010',
'36020',
'36030',
'36060',
'36330',
'36350',
'36400',
'36410',
'36420',
'36430',
'36440',
'36470',
'36480',
'37010',
'37020',
'37030',
'37050',
'37060',
'37070',
'37080',
'37090',
'37100',
'37310',
'37320',
'37350',
'37360',
'37370',
'37390',
'37410',
'37420',
'37430',
'38010',
'38030',
'38050',
'38060',
'38070',
'38080',
'38090',
'38100',
'38310',
'38320',
'38330',
'38340',
'38350',
'38360',
'38370',
'38380',
'38390',
'38400'
]
f = csv.writer(open("D:\\bus\\total.csv", "w" , newline = ""))
f.writerow(["sidocd", "gpslati", "gpslong", "nodeid", "nodenm"])
for item in all_links:
url = 'http://apis.data.go.kr/1613000/BusSttnInfoInqireService/getSttnNoList?' \
'serviceKey=서비스용키&_type=json&numOfRows=10000&pageNo=1&cityCode=' + item
response = requests.get(url)
data = response.json()
if data['response']['body']['totalCount'] > 0:
dataItem = data['response']['body']['items']['item']
for x in dataItem:
f.writerow([item, x['gpslati'], x['gpslong'], x['nodeid'], x['nodenm']])
,
반응형
'백앤드·배치App' 카테고리의 다른 글
재해위험지구 웹사이트 크롤링 - 크롬드라이버 사용 (1) | 2023.01.28 |
---|
댓글