Web API
API (Application Programming Interface, 응용 프로그램 프로그래밍 인터페이스)
웹 API : 웹 애플리케이션 개발에서 다른 서비스에 요청을 보내고 응답을 받기 위해 정의된 명세이다.
📌HTML 소스를 분석하는 과정 없이 웹 서버에 원하는 데이터를 요청하고 받을 수 있다!
데이터 형식 : XML, JSON
국제 우주 정거장 정보를 가져와서 세계 지도 위에 mapping 하기
국제 우주 정거장의 위도와 경도를 5초 간격으로 1분 동안 수집해서 mapping
- 필요한 라이브러리 호출하기
import requests
import json
import time
- 웹 페이지에 데이터를 HTTP로 요청하고 응답 받아서 필요한 정보 출력하기
- requests 함수로 웹 페이지를 불러와서 변수 r에 저장
- dictionary 형태인 JSON 데이터 형식으로 변환 후 저장
- 추출할 데이터 결정 후 정의하기
url = 'http://api.open-notify.org/iss-now.json'
position = []
for i in range(12):
r = requests.get(url) # requests 함수로 url을 읽어오기
iss_dict = json.loads(r.text) # string to json(dictionary)
lo = iss_dict['iss_position']['longitude']
la = iss_dict['iss_position']['latitude']
print(f"위도:{lo} 경도:{la}")
position.append((lo,la))
time.sleep(5)
→ 5초 간격으로 위도, 경도 정보를 12번 출력
→ 지도 위에 mapping 할 수 있도록 출력한 데이터를 position이라는 리스트에 저장하기
- 맵 객체를 생성하고 position 리스트에 저장한 좌표를 맵에 마커로 표시하기
# position 리스트가 비어있지 않다고 가정
lo_mean, la_mean = position[0]
# 맵 객체 생성
map = folium.Map(location=[float(lo_mean), float(la_mean)], zoom_start=8)
# 리스트에 저장된 좌표를 마커로 표시
for idx, (lo, la) in enumerate(position):
lo = float(lo)
la = float(la)
folium.Marker(
[lo, la],
popup='iss' + str(idx)
).add_to(map)
# HTML 파일로 저장하여 지도를 확인
map.save("iss_track.html")
- 저장한 HTML 파일 열기
# HTML 파일 열기
with open("iss_track.html", "r") as file:
html_content = file.read()
# 파일 내용 출력 또는 다른 작업 수행
print(html_content)
- 맵에 마킹한 위성의 위치 정보를 시각적으로 확인하기
from IPython.display import IFrame
IFrame("iss_track.html", width=700, height=500)
RESTCOUNTRIES 에서 국가 정보를 가져와 대한민국의 region과 같은 국가 출력하기
- 필요한 라이브러리 호출하기
import requests
import json
- 웹 페이지에 데이터를 HTTP로 요청하고 응답 받아서 필요한 정보 출력하기
url = "https://restcountries.com/v3.1/all"
r = requests.get(url)
countries = json.loads(r.text)
- 대한민국과 같은 region의 국가들을 모두 출력하기
for country in countries:
if country['region']=='Asia':
print(country['translations']['kor']['official'])
else:
pass
'Data Analysis > Web Crawling' 카테고리의 다른 글
[Crawling] Selenium 이용해 Google 검색으로 원하는 정보를 크롤링 해보자 (0) | 2024.08.21 |
---|---|
[Crawling] Anaconda 가상 환경 설정하고 Jupyterlab 사용하기 (0) | 2024.08.21 |
[Crawling] BeautifulSoup을 이용한 정적 웹페이지 크롤링 (3) (0) | 2024.08.21 |
[Crawling] BeautifulSoup을 이용한 정적 웹페이지 크롤링 (2) (0) | 2024.08.21 |
[Crawling] BeautifulSoup을 이용한 정적 웹페이지 크롤링 (1) (0) | 2024.08.21 |