[AIVLE SCHOOL] 데이터 수집 (2) - 크롤링1

춤추는 머쉬룸·2024년 10월 2일

AIVLE SCHOOL 6기

목록 보기
36/80
post-thumbnail

10/2 6, 7세션

A. 동적 페이지와 정적페이지

A-1. 동적페이지 구조

  • 더보기 버튼을 누르면 추가적인 내용이 나오는데, URL 변화는 없다.
  • 추가적인 내용이 나오도록 요청을 한 URL 을 알아내야 한다.
  • json 형태로 받아온다

파이썬 동적 크롤링 순서

  1. URL
  2. Request (URL) -> Response(Json)
  3. Json (str) -> list or dict -> DF

A-2. 정적 페이지 구조

  • url를 통해 was로 데이터를 요청하고 html로 받아옴
  • 페이지네이션 형태
  • html 형태로 받아온다

B. 동적 페이지 크롤링

B-1. 크롤링 준비

  • requests 패키지 : 파이썬으로 http 요청을 보내도록 함
import requests
import pandas as pd

B-2. url 찾기

  1. 개발자도구 > 네트워크 탭 > Fetch/XHR
  2. 원하는 버튼 클릭 후 요청되는 url 이 찾는 url 임
url = 'https://m.stock.naver.com/api/index/KOSPI/price?pageSize=10&page=2'

B-3. 서버에 데이터 요청

> response = requests.get(url)
> response

<Response [200]>
  • dir을 하면 사용 가능한 속성 및 메서드 출력
  • response.text 로 내용 확인

B-4. 서버에서 받은 데이터 파싱 (json -> list -> DF)

  • response.json() 으로 json 형태로 파싱
  • pd.DataFrame(data) 으로 데이터프레임 형태로 파싱 (딕셔너리의 key 가 열 이름)
data = response.json()
df = pd.DataFrame(data)

B-5. 함수로 표현하기

def stock(pageSize, page):
    # 1. url 찾기 -> 페이지는 매개변수로 받음
    url = f'https://m.stock.naver.com/api/index/KOSPI/price?pageSize={pageSize}&page={page}'
    
    # 2. request(url) -> response(json)
    response = requests.get(url)
    
    # 3. json -> list,dict -> df
    data = response.json()
    df = pd.DataFrame(data)
    df = df[['localTradedAt', 'closePrice']]
    return df

0개의 댓글