[에이쁠] 데이터 수집 1일차

3e_b1n2·2024년 10월 2일
2
post-thumbnail

클라이언트와 서버 사이의 관계 정리

웹에 대한 기본기 익히기

  • [Request]
    클라이언트는 브라우저(b)라는 프로그램이 URL을 통해 서버에 데이터를 요청

  • [Response]
    서버는 웹 어플리케이션 서버 프로그램(was)을 통해 데이터로 응답
    여기서 데이터는 HTML, JSON 등이 있음

URL

클라이언트와 서버사이의 데이터를 주고 받는 규칙

  • HTTP:// -> 프로토콜
    HTTPS:// -> 현재 주로 사용, 보안기능이 추가됨.
  • Domain -> 내가 원하는 서버로 데이터를 요청할 때 사용
    ip 주소를 가져올수 있음
    ex) naver.com

  • Port -> ip가 특정 서비스나 프로세스를 식별 (어떤 어플리케이션으로 접속할까?)

  • /main/ - path 경로

  • read.nhn - Page 파일이름

예시 링크
https://velog.io/write?id=98c3bfe4-15d9-4976-a6af-90ee0f653086

? 전까지가 파일로의 접근을 설명
? 뒷줄은 Query

  • mode = LSD - Query - url에 원하는 데이터를 요청할때 사용
    클라이언트가 서버에 데이터를 요청하면 서버가 was에 입력
    was는 dbs와 연결이 되어있으므로 dbs에 데이터를 가저오라고 명령

  • #뒤에는 어떤 위치에 어느 화면을 보여줄지 결정

http request methods

  • get 방식 (간단)
    url에 query 포함
    query 노출, 전송 가능 데이터 작음

  • post 방식 (번거로움)
    body(url이 아닌 다른 저장 공간)에 query 포함
    query 비노출, 전송 가능 데이터 많음

http status code

client와 sever가 데이터를 주고 받는 결과 정보

2xx - sucess (성공)
3xx - redirect
4xx - request error ( 페이지 없음 )
5xx - sever error

+internet
컴퓨터로 연결하여 tcp/ip 프로토콜을 이용해 정보를 주고 받는 컴퓨터 네트워크
해저케이블을 사용해 전세계 컴퓨터에 접속
무선인터넷은 매체를 주파수 사용 

client의 browser에 저장하는 문자열 데이터

session(연결정보)

client의 browser와 sever의 연결정보
사용예시 : 자동로그인

cache

client,sever의 RAM에 저장하는 데이터
RAM에 데이터를 저장하면 데이터 입출력이 빠름

Class

객체의 모음으로 조직화하는 프로그래밍 기법
객체를 구체화하는 형태의 프로그래밍으로 객체지향적임

사용법은?
: 클래스 선언(코드작성) -> 객체 생성(메모리사용) -> 메서드호출(코드실행)
: 클래스 선언(설계도작성) -> 객체 생성(제품생산) -> 메서드호출(코드실행)
클래스는 객체를 만들기 위한 설계도, 객체는 설계도로부터 만들어낸 제품으로 이해할 수 있음.

*클래스 내부에 정의된 함수인 메소드의 첫 번째 인자는 반드시 self여야 함

클래스 선언(코드작성)

class Account:
    balance = 0
    def deposit(self, amount):
        self.balance += amount
    def withdraw(self, amount):
        self.balance -= amount

special methods: 특별한 기능을 하는 메서드

-  생성자 메서드 : __ init __
스페셜메서드 중 하나로 객체를 생성할때 사용되는 메서드 
메서드에서 사용되는 변수의 초기값을 검사하고 설정하는 용도로 사용

웹크롤링 방법
웹크롤링이란?
-웹상의 정보를 탐색 및 수집하는 과정

웹페이지의 종류

  • 정적인 페이지 : 이벤트가 발생해도 화면의 변경이 없는 페이지
    //html포맷으로 데이터를 가져옴 -> URL1에서 URL2로 변경됨 -> URL이 바뀌며 데이터를 가져옴
    (외우기 tip! 정적이 h흐른다, 정적페이지는 -html)
  • 동적인 페이지 : URL 변경은 없으나 이벤트가 발생하면 페이지 내용을 동적으로 변경해줌
    JSON포맷으로 데이터를 가져옴
    (외우기 tip! 활동적인 json(제이슨), 동적페이지는 - json)

= 가져오는 데이터 프레임이 다른 점이 가장 큰 차이!!

[데이터 수집(크롤링)의 과정]
1. URL -> 개발자도구를 사용해 찾아냄
2. request -> response(json,html)
3. json,html포맷의 데이터 -> dataframe으로 변경

  • json은 파싱이 쉬움, html 파싱이 어려운편.

동적페이지 크롤링(json)

import requests
import pandas as pd

(1) 웹 서비스 분석을 위해 url 수집!

url = 'https://m.stock.naver.com/api/index/KOSPI/price?pageSize=10&page=2'

(2) 서버에 데이터를 요청! (requests)

response = requests.get(url)
response

response(응답)으로 200이 나와야 하며 400 혹은 500번이 나오면 안돼!

  • 200이 나와도 방심하지 말고 response.text를 사용해
    내용 확인을 꼭 해볼 것 !

(3) 내용 확인

response.text[:500]

(4) 서버에서 데이터를 받았다면 데이터를 파싱(형태 변경)

  • response.json()의 결과가 어떤 데이터 타입인지 확인
type(response.json())list
#결과는 list

=> json의 데이터는 리스트 형태.

(5) 함수만들기

  • 리스트형식의 데이터를 pandas의 DF형태로 변경
  • DF에서 거래시작과 종가를 남기고 나머지 제거
data = response.json() 
df = pd.DataFrame(data)[['localTradedAt','closePrice']]
df.tail(2)
profile
에이블기자 최멍빈입니다.

2개의 댓글

comment-user-thumbnail
2024년 10월 2일

정리 너무 잘하셨네요 최고!!

1개의 답글