반응형
* 위 강의노트는 패스트캠퍼스에서 주관하는 강의를 수강하고 작성한 노트입니다.
데이터 수집을 위한 Python
1. 웹 기본 지식 이해하기
개발자도구(Chrome)을 이용하여 웹 페이지 분석하기
-
웹 페이지 하나 열기 -> 보기 -> 개발자 -> 개발자도구(F12)
- Element Tap : 원하는 부분을 클릭하면 그 부분에 대한 html 코드를 표현해주는 탭
- Network Tap : 서버에 요청되는 모든 로그를 표현하는 tap
- XHR tap을 가서 데이터 크롤링 가능
HTTP method(GET, POST) 이해하기
HTTP란?
- HyperText Transfer Protocol : HTML 문서 등의 리소스를 전송하는 프로토콜
- 클라이언트와 서버 상에서의 리소스를 서로 공유
- 클라이언트 –> http 요천(get, post 등) –> 서버
- 서버 –> http 응답 –> 클라이언트
- 클라이언트가 요청하는 방법
get 요청
: 데이터를 url에 포함하여 전달(주로 리소스 요청에 사용)
- get 방식을 확인할 수 있는 방법?
- 구글 extend 사용 : GET 표시 확인
- 개발자도구(F12) 사용 : request/method 확인post 요청
: 데이터를 Form data 에 포함하여 전달(주로 로그인에 사용)
- 대부분 눈에 보이지 않는 요청
- 로그인 페이지를 요청하는 get 방식
- 데이터를 숨기기 위해서 사용하는 방식
HTML 엘레멘트 이해하기
HTML(Hyper Text Markup Language) 이란?
-
웹사이트를 생성하기 위한 언어로 문서와 문서가 링크로 연결되어 있고, 태그를 사용하는 언어
-
HTML 문서의 기본 블락
- 브라우저에게 어떻게 렌더링(화면에 표시) 될지 전달
- <태그명 속성1 = “속성값1” 속성2 = “속성값2”> Value
2. API의 활용
requests 모듈 사용하기 (HTTP 통신)
requests 모듈
- http request/response를 위한 모듈
- HTTP method를 메소드 명으로 사용하여 request 요청 예) get, post
import request
url = "https://news.v.~~~~~"
- get 요청하기
- http get 요청하기
- query parameter 이용하여 데이터 전달하기
import requests
url = "https://news.v.~~~~~"
resp = requests.get(url) ## 해당 url의 응답을 가져와라
resp
>> <Response [200]> ## 응답에 대한 코드. 200이면 요청에 문제가 없다는 내용
resp.text ## 해당 url의 html 내용
- post 요청하기
- http post 요청하기
- post data 이용하여 데이터 전달하기
url = "https://~~~~~"
data = {
'id' : 'asddf',
'pwd' : 'test'
}
resp = requests.post(url, data = data) ## data의 정보로 url에 통신 보내기
resp.text ## data에 대한 반응값이 html형식으로 나옴
- HTTP header 데이터 사용하기
- header 데이터 구성하기
- header 데이터 전달하기
url = "https://~~~~~"
headers = {
'user-agent' : '~~~~~'
}
resp = requests.get(url, headers = headers)
resp.text
- HTTP response 처리하기
- response 객체의 이해
- status_code 확인하기
- text 속성 확인하기
url = "https://~~~~~"
resp = requests.get(url)
resp.status_code ## 응답 코드만 확인하기
>> 200
OPEN API를 활용하여 json 데이터 추출하기(공공데이터 API)
공공데이터 포털 OPEN API 사용하기
- 공공데이터 포털 회원가입/로그인(https://www.data.go.kr/)
- API 사용 요청 / 키 발급 (대부분의 공공데이터는 api 키를 요구함 )
- API 문서(specification) 확인
- API 테스트 및 개발
- Endpoint 확인하기
- API가 서비스되는 서버의IP 혹은 domain 주소
- 공공데이터 포털 사이트의 예제를 따라서 하면 간편하다.
endpoint = 'http://~~~'.format(serviceKey) ## 공공데이터 포털의 예제 참조
# serviceKey : 공공데이터 포털에서 받은 인증키
print(endpoint) # 들어가보면 xml 형식으로 데이터가 들어와 있음
##json 형식을 원할 경우 뒤에 '&_type=json'을 추가하면 됨
endpoint = 'http://~~~&_type=json'.format(seviceKey) # json으로 출력
- Parameter 확인하기
- API 호출에 필요한 parameter 값 확인 및 구성
- 요청 및 Response 확인
- resquests 모듈을 활용하여 API호출
- response 확인하여 원하는 정보 추출
- json 데이터의 경우, python dictionary로 변경하여 사용 가능
endpoint = 'http://~~~&_type=json'.format(seviceKey, 1)
resp = requests.get(endpoint)
print(ressp.status_code)
>> 200 # 정상작동
print(resp.text)
>>{"response" : {"header" : {"resultCode":"0000" .....}}}
resp.json() # response 객체를 json으로 불러올 수 있음
type(resp.json()) # dict 형식이기 때문에 dict 형식으로 원하는 데이터만 추출 가능
>> dict
반응형
'Study > ML_Basic' 카테고리의 다른 글
머신러닝과 데이터 분석 A-Z 올인원 패키지-데이터 처리를 위한 Python(Numpy) – (1) (0) | 2020.09.30 |
---|---|
머신러닝과 데이터 분석 A-Z 올인원 패키지-데이터 수집을 위한 Python(2) (0) | 2020.09.10 |
[수강 후기]머신러닝과 데이터분석 A-Z 올인원 패키지 - python programming 기초 (0) | 2020.09.08 |
머신러닝과 데이터분석 A-Z 올인원 패키지 - Python Programming 기초(4) (0) | 2020.09.03 |
머신러닝과 데이터분석 A-Z 올인원 패키지 - Python Programming 기초(3) (0) | 2020.09.03 |