API란
- 두 프로그램이 서로 대화 방식을 정의 (데이터를 주고 받는 규칙을 맞춰주는 개념)
- HTTP는 인터넷에서 웹 페이지를 전송하는 기본 통신 방법
- 다양한 API 중 HTTP 프로토콜을 사용하는 웹 기반 API가 널리 사용된다.
- HTML은 웹 페이지를 위한 표준 언어이며 마크업 언어라고 부른다.
- 웹 기반 API에서 HTML 대신 csv,json,xml을 선호하는데 이유는 HTML의 구조가 복잡하기 때문이다.
파이썬에서 JSON 데이터 다루기
- JSON의 객체는 파이썬 딕셔너리와 유사한 형태이다.
d = {"name": "집에 가고 싶다"}
print(d['name'])
import json
#파이썬 객체를 json 형식에 맞는 텍스트로 바꾸기
d_str = json.dumps(d,ensure_ascii=False) #한글이 포함되어 있으므로 ensure_ascii 매개변수를 false지정
print(d_str)
print(type(d_str))
#json 문자열을 파이썬 객체로 반환하기
d2 = json.loads(d_str)
print(d2['name'])
print(type(d2))
json.dumps() 함수
- 파이썬 객체를 json 문자열로 반환해주는 함수
- 웹 기반 API로 데이터를 전달할 때는 파이썬 텍스트로 전달해야 하기 때문에 사용한다.
- ensure_ascii 함수는 아스키 문자 외 다른 문자를 16진수로 출력한다는 특징이 있으므로
한글을 제대로 출력하지 못한다. False로 지정시 원래 저장된 문자를 그대로 출력한다.
json.loads() 함수
- json 문자열을 파이썬 객체로 변환하는 함수
- json문자열을 파이썬 객체로 다시 변환하는 이유는 다른 프로그램으로 전달시 텍스트로 전송을 하되 프로그램에서 사용할시에는 다시 파이썬 객체로 반환하기 때문이다.
read_json() 함수
import pandas as pd
pd.read_json(d_str)
- json 문자열을 데이터 프레임으로 변환하는 함수
파이썬에서 XML 데이터 다루기
import xml.etree.ElementTree as et
book = et.fromstring(x_str)
print(type(book))
print(book.tag)
#자식 엘리먼트 확인하기
name = book.findtext('name')
author = book.findtext('author')
print(name)
print(author)
fromstring()함수
- XML 문자열을 파이썬 객체로 변환하는 함수
findtext() 메서드
- fintext() 메서드는 해당하는 자식 엘리먼트를 탐색하여 자동으로 텍스트 반환
- 여러 개의 자식 엘리먼트를 찾을 시 findall() 메서드를 사용
파이썬으로 API 호출하기: requests 패키지
import requests
url = **api 인증키를 넣은 호출 url 작성**
r = requests.get(url)
data = r.json()
print(data)
book_df = pd.DataFrame(data)
book_df.to_json('book_df.json')
- get() 함수는 API 호출의 결과를 담고 있는 requests 패키지의 response 클래스 객체를 반환
- json() 메서드는 웹 서버로부터 받은 json 문자열을 파이썬 객체로 변환하여 반환
- to_json() 메서드는 데이터프레임을 json 파일로 저장
웹 스크래핑 사용하기
웹 스크래핑(웹 크롤링)
- 웹사이트의 페이지를 옮겨가며 데이터를 추출하는 작업
파싱과 파서
- 파서는 입력 데이터를 받아 데이터 구조를 만드는 소프트웨어 라이브러리/ 이 과정을 파싱이라고 함
웹 스크래핑 핵심 함수와 메서드
함수/메서드 | 기능 |
loc | 레이블(이름) 또는 불리언 배열로 데이터프레임의 행과 열 선택 |
BeautifulSoup.find() | 현재 태그 아래의 자식 태그 중에서 지정된 이름에 맞는 첫 번째 태그 찾음 |
BeautifulSoup.find_all() | 현재 태그 아래의 자식 태그 중에서 지정된 이름에 맞는 모든 태그 찾음 |
BeautifulSoup.get_text() | 태그 안의 텍스트 반환 |
Dataframe.apply() | 데이터프레임의 행 또는 열에 지정한 함수 적용 |
pandas.merge() | 데이터프레임이나 시리즈 객체를 합침 |
필수 숙제 + 추가 숙제
'공부 > python' 카테고리의 다른 글
혼자 공부하는 데이터 분석 4주차: 데이터 요약하기 (0) | 2024.07.28 |
---|---|
혼자 공부하는 데이터 분석 3주차: 데이터 정제하기 (0) | 2024.07.21 |
혼자 공부하는 데이터 분석 1주차: 데이터 분석을 시작하며 (0) | 2024.07.07 |
알고리즘 BFS(너비우선탐색) (0) | 2023.11.24 |
enumerate (0) | 2023.11.23 |