[오픈 API를 통한 데이터 수집]
서울시 지역구 별 소방서 개수 구하기
소방서 위치 조회서비스 이용하기
https://www.data.go.kr/dataset/15000933/openapi.do
(1) 필요 라이브러리 불러오기
from bs4 import BeautifulSoup
from urllib.request import Request, urlopen
import pandas as pd
(2) open_api 요청 테스트
serviceKey = '일반 인증키(Encoding)'
url = 'http://openapi.safekorea.go.kr/openapi/service/firestation/item?'
api_url = url + 'serviceKey=' + serviceKey + '&firestation_addr_cd=3011000000'
api_url
(3) 가져온 XML 데이터 파싱
headers = {'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36'}
request = Request(api_url, headers=headers)
response = urlopen(request)
html = response.read()
soup = BeautifulSoup(html, 'html.parser')
addr = soup.select('addrNm')
name = soup.select('facilityName')
fax = soup.select('fax')
lat = soup.select('latitude')
long = soup.select('longitude')
tel = soup.select('tel')
data_t = []
for i in range(len(addr)):
temp = []
temp.append(addr[i].text)
temp.append(name[i].text)
temp.append(fax[i].text)
temp.append(lat[i].text)
temp.append(long[i].text)
temp.append(tel[i].text)
data_t.append(temp)
col = ['주소', '이름', '팩스', '위도', '경도', '전화번호']
data = pd.DataFrame(data_t, columns=col)
data.to_csv('sobang.csv', index=False)
print('성공')
성공
(4) 서울시 지역구 법정코드 불러오기
codelist = pd.read_csv('codelist.csv', encoding='euckr')
codelist['법정동 코드']
첫번째에 있는 법정동 코드 가져오기(서울시 종로구)
url = 'http://openapi.safekorea.go.kr/openapi/service/firestation/item?'
api_url_b = url + 'serviceKey=' + serviceKey + '&firestation_addr_cd=' + str(codelist['법정동 코드'][1])
api_url_b
반복문을 활용해 한번에 API 요청하기
data_b = []
for i in range(len(codelist['법정동 코드'])):
url = 'http://openapi.safekorea.go.kr/openapi/service/firestation/item?'
api_url_b = url + 'serviceKey=' + serviceKey + '&firestation_addr_cd=' + str(codelist['법정동 코드'][i])
headers = {'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36'}
request = Request(api_url_b, headers=headers)
response = urlopen(request)
html = response.read()
soup = BeautifulSoup(html, 'html.parser')
addr = soup.select('addrNm')
name = soup.select('facilityName')
fax = soup.select('fax')
lat = soup.select('latitude')
long = soup.select('longitude')
tel = soup.select('tel')
for j in range(len(addr)):
temp = []
temp.append(addr[j].text)
temp.append(name[j].text)
temp.append(fax[j].text)
temp.append(lat[j].text)
temp.append(long[j].text)
temp.append(tel[j].text)
data_b.append(temp)
col = ['주소', '이름', '팩스', '위도', '경도', '전화번호']
data = pd.DataFrame(data_b, columns=col)
data.to_csv('sobang_b.csv', index=False)
print('성공')
성공
'데이터분석' 카테고리의 다른 글
[데이터 분석] sales 데이터 전처리하기 (0) | 2021.06.30 |
---|---|
[데이터 분석] sales 데이터 분석 (0) | 2021.06.30 |
[데이터 분석] 사람인 채용공고 크롤링 (0) | 2021.06.30 |
[데이터 분석] 아마존 ecommerse 데이터 분석 (0) | 2021.06.30 |
데이터란 무엇인가? (0) | 2021.06.26 |
댓글