defget_coordinate(address):# 주소를 입력받음
result = ""
url = 'https://dapi.kakao.com/v2/local/search/address.json?query=' + address # 카카오 api 서버스를 이용하여 접근
rest_api_key = 'api키이빈다'# 사용자 api key
header = {'Authorization': 'KakaoAK ' + rest_api_key}
r = requests.get(url, headers=header)
if r.status_code == 200: # 정보를 오류없이 받아왔다면iflen(r.json()['documents']) != 0: # 길이가 0이 아니라면try :
result_address = r.json()["documents"][0]["address"]
result = (result_address["y"],result_address["x"]) # 좌표 정보에 접근except: # 예외처리
result = np.nan
else: # 길이가 0인경우 na처리
result = np.nan
else:
result = "ERROR[" + str(r.status_code) + "]"return result # 좌표를 반환
get_coordinate('수원시 권선구 권선로669번길 34(권선동) (권선동 1011-15)')
이렇게 나의 인증키, 주소, 요청인자들을 활용해 하나의 url을 만들고 해당 html구문을 분석하여
원하는 정보를 가져오면 된다.
res = requests.get(request_query)
soup = BeautifulSoup(res.text, 'lxml')
items = soup.find_all('item')
for item in items:
day = item.locdate.get_text()
name = item.datename.get_text()
print(name, ' : ', day)
추석 : 20210920
추석 : 20210921
추석 : 20210922
포문을 활용하면 이렇게
import requests
import datetime
import pandas as pd
from bs4 import BeautifulSoup
import urllib.parse as urlparse
defget_request_query(url, operation, params, serviceKey):
params = urlparse.urlencode(params)
request_query = url + '/' + operation + '?' + params + '&' + 'serviceKey' + '=' + serviceKey
return request_query
mykey = "인증키공개 ㄴㄴ"
url = 'http://apis.data.go.kr/B090041/openapi/service/SpcdeInfoService'
operation = 'getRestDeInfo'
df = pd.DataFrame()
for year in [2019,2020,2021]:
for month inrange(1,13):
if month < 10:
month = '0' + str(month)
else:
month = str(month)
params = {'solYear':year, 'solMonth':month}
request_query = get_request_query(url, operation, params, mykey)
res = requests.get(request_query)
soup = BeautifulSoup(res.text, 'lxml')
items = soup.find_all('item')
for item in items:
day = item.locdate.get_text()
name = item.datename.get_text()
data = {'휴일이름':name , '날짜':day}
df = df.append(data, ignore_index=True)
display(df.head())
display(df.tail())