혼공단/혼공단 9기

혼자 공부하는 데이터 분석 with 파이썬 2장 - 데이터 수집하기

하양훈 2023. 1. 15. 23:39
반응형

02-1 API 사용하기

 

<API>

- 두 프로그램이 서로 대화하기 위한 방법을 정의한 것

- 두 프로그램이 데이터를 주고받는 규칙이 다르다면 올바르게 데이터를 처리하지 못한다.

<HTTP와 HTML>

- HTTP : 인터넷에서 웹 페이지를 전송하는 기본 통신 방법

- HTML : 웹 브라우저가 화면에 표시할 수 있는 문서의 한 종류이자 웹 페이지를 위한 표준 언어

<JSON 데이터 다루기>

[JSON]

- 파이썬의 딕셔너리와 리스트를 중첩해 놓은것과 비슷하다.

- 키와 값을 콜론으로 연결한다.

- 키와 값에 문자열을 쓰려면 항상 큰따옴표로 감싸주어야 한다.

EX) {"name" : "철수" }

 

파이썬 객체를 JSON 문자열로 반환하기 : json.dumps() 함수

import json
d = {"name":"철수"}
d_str = json.dumps(d,ensure_ascii=False)
print(d_str)

ensure_ascii : 아스키 형태를 유지할지 여부를 묻는 매개변수, False로 하면 원래 저장된 문자를 그대로 출력하도록 만들어 준다.

 

JSON 문자열을 파이썬 객체로 변환하기 : json.loads() 함수

d3 = json.loads('["name":"철수","age":12])

JSON 문자열을 데이터 프레임으 변환하기 : json.loads() 함수

import pandas as pd
pd.read_json(d_str)

 

<XML 데이터 다루기>

 

[XML]

 -eXtensible Markup Language의 약자

- HTML 웹페이지를 표현하는데는 뛰어나지만 구조적이지 못하기 떄문에 프로그램간의 약속대로 전송하는 API에서는 적절하지 않다.

- 대신 컴퓨터와 사람이 모두 읽고 쓰기 편한 문서 포맷을 위해 고안되었다.

- 엘리먼트들이 계층 구조를 이루면서 정보를 표현

- 엘리먼트는 시작 태그와 종료 태그로 감싼다.

EX)

<person>
  <name> 철수 </name>
  <age> 12 </age>
</person>

XML 문자열을 파이썬 객체로 변환하기 : fromstring() 함수

import xml.etree.ElementTree as et
book = et.fromstring(x_str)

자식 엘리먼트 확인하기 : findtext() 메서드

name = book.findtext('name')
age = book.findtext('age')

여러개의 자식 엘리먼트 확인하기 : findtext() 메서드와 for 문

for book in books.findall('book'):
    name = book.findtext('name')
    age = book.findtext('age')

 

<API를 호출하는 URL 작성하기>

- 공개 API를 사용하려면 호출 URL이 필요하다. 

 

[호출 URL의 파라미터]

format : 지정하지 않으면 XML 문서로 반환된다.

startDt : 검색 시작 일자

endDt : 검색 종료 일자

age : 연령대

authKey : 인증키

 

- 파이썬에서는 API를 호출하기 위해서 requests 패키지를 이용한다.

import requests

r = requests.get(url)
data = r.json()
print(data)

 

02-2 웹 스크래핑 사용하기

 

<HTML에서 데이터 추출하기 : 뷰티플수프>

 

from bs4 import BeautifulSoup
improt requests

r = requests.get(url)
soup = BeautifulSoup(r.text, 'html.parser')
element = soup.find(XXX)

 

<웹 스크래핑할때 주의할 점>

 

1) 웹사이트에서 스크래핑을 허락했는지 확인하자. ( robots.txt 파일 확인)

2) HTML 태그를 특정할 수 있는지 확인하자.

반응형