본문 바로가기
환급 챌린지!

[패스트캠퍼스 수강 후기] 머신러닝 인강 100% 환급 챌린지 14회차 미션

by 빅데이터1020 2020. 11. 1.
SMALL

안녕하세요.

패스트 캠퍼스 수강후기 - 머신러닝과 데이터 분석 A-Z 14회차 미션 시작합니다!

머신러닝 인강 후기 14회차는 API에 대해 공부합니다.

 

패스트 캠퍼스 강의에서 제공하는 실습파일을 보면서 강사님의 지시에 따라 실습을 따라하시면 됩니다.

 

" 크롤링 - 개발자도구(chrome)으로 웹페이지 분석하기 "

1) requests 모듈 사용하기 (HTTPS 통신)

http request / response 를 위한 모듈입니다.

HTTP method를 메소드 명으로 사용하여 request 합니다. 요청은 get이나 post로 합니다.

# requests 모듈
import requests

 

2) get 요청하기

http get 요청하기

query parameter 이용하여 데이터를 전달합니다.

url = "https://news.v.daum.net/v/20190728165812603"
resp = requests.get(url)
resp.test

 

3) post 요청하기

http post를 요청하고 post data를 이용하여 데이터 전달합니다.

url = "https://www.kangcom.com/member/member_check.asp"
data = {
'id' : '해당 아이디'
'pwd' : '해당 비밀번호'
}

resp = requests.post(url, data = data)
resp.text

 

4) HTTP header 데이터 이용하기

header 데이터를 구성해서 header 데이터에 전달합니다.

get이나 post로 크롤링이 되지 않으면 header를 사용할 수 있습니다.

url = 'https://news.v.daum.net/v/20190728165812603'
headers = {
'user-agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.142 Safari/537.36'
}

resp = requests.get(url, headers=headers)
resp.text

 

" Open API를 활용하여 json 데이터를 추출하기 (공공데이터 API) "

1) 공공데이터 포털 OPEN API 사용하기

 

공공데이터 포털

국가에서 보유하고 있는 다양한 데이터를『공공데이터의 제공 및 이용 활성화에 관한 법률(제11956호)』에 따라 개방하여 국민들이 보다 쉽고 용이하게 공유•활용할 수 있도록 공공데이터(Datase

www.data.go.kr

 

2) key 값 확인하기

서비스 호출 트래킹을 할 목적이나 악의적인 사용을 금지할 목적으로 주로 사용하빈다.

새로 받은 키는 1시간 이후 사용할 수 있습니다.

endpoint에서 serviceKey부분을 ={}.format()으로 처리하면 간편합니다.

본 강의에서는 json으로 데이터를 추출하기 때문에 맨 끝에 &_type=json을 추가하게 됩니다.

serviceKey = '공공데이터포털에서 받은 키'
endpoint = 'http://api.visitkorea.or.kr/openapi/service/rest/EngService/areaCode?serviceKey={}&numOfRows=10&pageSize=10&pageNo=1&MobileOS=ETC&MobileApp=AppTest&_type=json'.format(serviceKey)

 

3) parameter 확인하기

pageNo를 동적으로 처리합니다. (={}.format() 형식)

json 형식은 파이썬의 dict와 호환이 가능하기 때문에 json 형식을 많이 쓴다고 하네요!

endpoint = 'http://api.visitkorea.or.kr/openapi/service/rest/EngService/areaCode?serviceKey={}&numOfRows=10&pageSize=10&pageNo={}&MobileOS=ETC&MobileApp=AppTest&_type=json'.format(serviceKey, 1)
resp = requests.get(endpoint)

print (resp.status_code) #200 으로 잘 들어오고 있음을 확인할 수 있습니다.
print (resp.text) # json 데이터가 잘 들어고고 있음을 확인할 수 있습니다.

data = resp.json() #json으로 객체를 바로 받아올 수 있습니다. json의 타입은 dict입니다.

# data에서 필요한 부분만 추출하고 싶은 경우
print (data['response']['body']['items']['item'][0])

 

 

 

머신러닝 인강 최강자를 만나고 싶으면!? https://bit.ly/3lZfGmn

LIST