머신러닝과 데이터 분석 A-Z 올인원 패키지 - 데이터 수집을 위한 Python(1)

2020. 9. 10. 23:28·AI Study/ML_Basic
반응형

* 위 강의노트는 패스트캠퍼스에서 주관하는 강의를 수강하고 작성한 노트입니다. 

데이터 수집을 위한 Python

1. 웹 기본 지식 이해하기

개발자도구(Chrome)을 이용하여 웹 페이지 분석하기

  1. 웹 페이지 하나 열기 -> 보기 -> 개발자 -> 개발자도구(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 모듈

  1. http request/response를 위한 모듈
  2. HTTP method를 메소드 명으로 사용하여 request 요청 예) get, post
import request
url = "https://news.v.~~~~~"

 

  • get 요청하기
    1. http get 요청하기
    2. query parameter 이용하여 데이터 전달하기
import requests

url = "https://news.v.~~~~~"
resp = requests.get(url) ## 해당 url의 응답을 가져와라

resp
>> <Response [200]>  ## 응답에 대한 코드. 200이면 요청에 문제가 없다는 내용

resp.text ## 해당 url의 html 내용

 

  • post 요청하기
    1. http post 요청하기
    2. post data 이용하여 데이터 전달하기
url = "https://~~~~~"
data = {
    'id' : 'asddf',
    'pwd' : 'test'
}
resp = requests.post(url, data = data) ## data의 정보로 url에 통신 보내기

resp.text ## data에 대한 반응값이 html형식으로 나옴

 

  • HTTP header 데이터 사용하기
    1. header 데이터 구성하기
    2. header 데이터 전달하기
url = "https://~~~~~"
headers = {
    'user-agent' : '~~~~~'
}
resp = requests.get(url, headers = headers)
resp.text

 

  • HTTP response 처리하기
    1. response 객체의 이해
    2. status_code 확인하기
    3. text 속성 확인하기
url = "https://~~~~~"

resp = requests.get(url)
resp.status_code ## 응답 코드만 확인하기
>> 200

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

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

  1. 공공데이터 포털 회원가입/로그인(https://www.data.go.kr/)
  2. API 사용 요청 / 키 발급 (대부분의 공공데이터는 api 키를 요구함 )
  3. API 문서(specification) 확인
  4. 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
반응형

'AI 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
'AI Study/ML_Basic' 카테고리의 다른 글
  • 머신러닝과 데이터 분석 A-Z 올인원 패키지-데이터 처리를 위한 Python(Numpy) – (1)
  • 머신러닝과 데이터 분석 A-Z 올인원 패키지-데이터 수집을 위한 Python(2)
  • [수강 후기]머신러닝과 데이터분석 A-Z 올인원 패키지 - python programming 기초
  • 머신러닝과 데이터분석 A-Z 올인원 패키지 - Python Programming 기초(4)
자동화먹
자동화먹
많은 사람들에게 도움이 되는 생산적인 기록하기
    반응형
  • 자동화먹
    자동화먹의 생산적인 기록
    자동화먹
  • 전체
    오늘
    어제
    • 분류 전체보기 (144)
      • 생산성 & 자동화 툴 (30)
        • Notion (24)
        • Obsidian (0)
        • Make.com (1)
        • tips (5)
      • Programming (37)
        • Python (18)
        • Oracle (6)
        • Git (13)
      • AI Study (65)
        • DL_Basic (14)
        • ML_Basic (14)
        • NLP (21)
        • Marketing&Recommend (4)
        • chatGPT (0)
        • etc (12)
      • 주인장의 생각서랍 (10)
        • 생각정리 (4)
        • 독서기록 (6)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    gcp
    git commit
    git
    데이터베이스
    notion
    Jupyter notebook
    python기초
    빅데이터분석
    파이토치로 시작하는 딥러닝 기초
    데이터분석
    GPT
    빅데이터
    파이토치
    Transformer
    LSTM
    딥러닝
    seq2seq
    cnn
    Python
    Github
    pytorch
    노션
    자연어처리
    노션첫걸음
    기초
    dl
    머신러닝
    nlp
    Google Cloud Platform
    ML
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
자동화먹
머신러닝과 데이터 분석 A-Z 올인원 패키지 - 데이터 수집을 위한 Python(1)
상단으로

티스토리툴바