일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
- 구조
- 데이터
- IT인프라
- 판다스
- 미니프로젝트
- MachineLearning
- 넘파이
- 정보화
- 데이터분석
- 자기개발
- 교육
- 데이터프레임
- It
- 데이터다듬기
- 데이터다루기
- deeplearning
- 데이터분석기초
- DX컨설턴트
- 짧은생각
- 프로젝트
- KT에이블스쿨
- 인프라
- 오답노트
- 아키텍처
- 파이썬기초
- 데이터분석가
- 머신러닝
- 딥러닝
- KT에이블스쿨5기
- 파이썬
- Today
- Total
꾸준히 성장하기
[D+27] 교육 | 데이터 크롤링의 기본과 접근 방법(정적 페이지 크롤링) 본문
안녕하세요, 여러분! 오늘은 데이터 크롤링에 대해 이야기해보려고 합니다.
데이터 크롤링은 웹에서 유용한 정보를 자동으로 추출하는 과정입니다.
이 과정은 데이터 분석가나 개발자들에게 필수적인 기술 중 하나로, 웹상의 정보를 효율적으로 수집하고 활용할 수 있게 해줍니다.
1. 웹페이지의 종류
1) 정적인 페이지
웹 브라우저에 화면이 한 번 로드되면, 이벤트에 의한 화면의 변경 없이 그대로 유지되는 페이지입니다. 예를 들어, 기사나 블로그 포스트 페이지가 이에 해당합니다.
2) 동적인 페이지
웹 브라우저에 화면이 로드된 후, 사용자의 상호작용(예: 버튼 클릭, 스크롤 등)에 따라 서버에서 데이터를 가져와 화면을 변경하는 페이지입니다. 쇼핑몰의 상품 목록이나 소셜 미디어 피드가 대표적인 예입니다.
2. 웹페이지의 종류
1) JSON 문자열로 받아 파싱하는 방법
이 방식은 주로 동적 페이지에서 사용되며, 서버로부터 JSON 형태의 문자열을 받아 이를 파이썬의 리스트나 딕셔너리로 변환하여 사용합니다.
2) HTML 문자열로 받아 파싱하는 방법
이 방식은 주로 정적 페이지에서 사용되며, HTML 형태의 문자열을 받아 필요한 데이터만 추출합니다.
3. 웹페이지의 종류
정적 페이지를 크롤링하는 기본적인 순서는 다음과 같습니다.
1) 웹서비스 분석: 우선, 데이터를 추출하고자 하는 웹페이지의 URL을 분석합니다.
page, page_size = 1, 60
url = f'https://m.stock.naver.com/api/index/KOSPI/price?pageSize={page_size}&page={page}'
print(url)
2) 서버에 데이터 요청: 분석한 URL로 서버에 데이터를 요청합니다.
response = requests.get(url)
response
3) 서버에서 받은 데이터 파싱: 서버로부터 받은 데이터(보통 HTML 형태의 문자열)를 파싱하여 필요한 정보만 추출합니다. 이 과정에서 추출한 데이터는 파이썬의 리스트나 딕셔너리 형태로 변환되고, 이를 바탕으로 판다스의 DataFrame으로 만들 수 있습니다.
columns = ["localTradedAt", "closePrice"]
data = response.json
kospi_df = pd.DataFrame(data)[columns]
kospi_df.tail(2)
위 과정, 함수로 만들기: 반복적인 작업을 효율적으로 처리하기 위해, 위의 과정을 함수로 정의합니다. 이렇게 하면 다양한 웹페이지에 대해 유연하게 데이터를 추출할 수 있습니다.
def stock_price(code='KOSPI', page_size=60, page=1):
# 1. URL
url = f'https://m.stock.naver.com/api/index/{code}/price?pageSize={page_size}&page={page}'
# 2. request(url) > response: json(str)
response = requests.get(url)
# 3. json(str) > list, dict > DataFrame
return pd.DataFrame(response.json())[["localTradedAt", "closePrice"]]
df = stock_price(code = 'KOSDAQ' )
pd.tail(2)
이렇게 정적 페이지에서 데이터 크롤링의 기본적인 개념과 접근 방법을 알아보았습니다.
다음 시간에는 동적 페이지에서 데이터를 크롤링하는 실습을 진행해보겠습니다.
여러분의 데이터 분석 여정에 이번 포스팅이 도움이 되길 바랍니다.
'KT 에이블스쿨 5기 > 교육' 카테고리의 다른 글
[D+35] 교육 | .melt() 메서드(with Power BI) (0) | 2024.03.26 |
---|---|
[D+34] 교육 | 데이터 분석 표현, Streamlit (0) | 2024.03.25 |
[D+26] 교육 | 이변량 분석의 핵심: 수치-범주 & 범주-범주 간 관계 (0) | 2024.03.17 |
[D+24] 교육 | 이변량 분석의 핵심: 수치-수치 & 범주-수치 간 관계 (0) | 2024.03.15 |
[D+22] 교육 | 개별 변수 분석, 단변량 분석 (0) | 2024.03.13 |