7/2 - 크롤링
데이터 수집 방법에는 2가지가 있다.
- 웹 크롤링 방식
- API 활용
웹크롤링 방식
장점:
- 데이터 접근성: 웹에 공개된 거의 모든 데이터에 접근 가능.
- 유연성: 거의 모든 웹사이트에서 데이터를 추출할 수 있음.
- 비용: 대부분의 경우 무료로 사용할 수 있음.
- 다양한 형식: HTML, XML 등 다양한 형태의 데이터를 스크랩할 수 있음.
단점:
- 법적 문제: 웹사이트의 이용 약관을 위반할 수 있음.
- 데이터의 일관성: 웹페이지의 구조가 변경될 경우 스크랩핑 코드를 다시 작성해야 할 수 있음.
- 속도: 매우 많은 양의 데이터를 수집할 때 서버 부하를 초래할 수 있음.
- 블록당할 위험: IP 차단 등으로 인해 스크랩핑이 막힐 수 있음.
API 방식
장점:
- 법적 문제 회피: 대부분의 API는 사용자가 합법적으로 데이터에 접근할 수 있도록 설계됨.
- 데이터 구조화: API는 일관된 데이터 형식을 제공하므로 데이터 추출 및 처리가 쉬움.
- 성능 및 속도: API는 데이터에 대한 빠른 액세스를 제공하고 대량의 데이터도 효율적으로 처리 가능.
- 문서화와 지원: 대부분의 API는 잘 문서화되어 있고, 개발자 지원도 제공됨.
단점:
- 접근성 제한: 일부 데이터는 API를 통해서만 접근 가능하며, 공개되지 않은 데이터는 API가 제공되지 않을 수 있음.
- 비용: 일부 API는 무료 티어가 제공되지만, 대용량 데이터나 고급 기능을 사용하려면 유료 요금제를 사용해야 할 수 있음.
- 의존성: API는 제공하는 기능에 종속되므로 API 제공자가 서비스를 변경하거나 중단할 경우 개발자에게 영향을 줄 수 있음.
API 이해하기
-> API는 기본적으로 요청(request)와 응답으로 구성되어 있다.
- 데이터 요청 시, 응답할 때에는 2가지 컨셉으로 응답한다(XML, JSON)
- (우리의)크롤링의 최종목표 --> 웹 데이터를 DataFrame으로 변환하는 것이다.
-request문법 관련 참고 사이트
출처: https://requests.readthedocs.io/en/latest/
-comprehension
pd.json_normalize(pd.DataFrame(data['response']['docs'])['doc'])
- .json_normalize메소드
: JSON 데이터를 Pandas 데이터프레임으로 변환하는 유용한 도구입니다. 특히 중첩된 JSON 구조를 평탄화하여 데이터프레임으로 만들 때 매우 유용합니다. 예를 들어, API에서 받은 JSON 데이터를 처리할 때 자주 사용됩니다.
import pandas as pd
import json
# 예제 JSON 데이터 (가상 데이터)
data = {
"response": {
"docs": [
{
"id": 1,
"title": "Document 1",
"author": {"first_name": "John", "last_name": "Doe"},
"tags": ["tag1", "tag2"],
"created_at": "2024-06-30T12:00:00Z"
},
{
"id": 2,
"title": "Document 2",
"author": {"first_name": "Jane", "last_name": "Smith"},
"tags": ["tag2", "tag3"],
"created_at": "2024-07-01T09:30:00Z"
}
]
}
}
# 데이터프레임으로 변환
df = pd.json_normalize(data['response']['docs'])
# 결과 출력
print(df)
- 점선 마우스 모양을 누르고 홈페이지를 누르면 소스코들 select를 할 수 있음.
ctrl + f 이후 원하는 목록을 찾을 수 있다.( 웹 크롤링 입문 정도)
- 책의 제목, 기타 등의 정보를 F12를 통해 알 수 있다.
- 그러나 이 웹사이트에서 크롤링을 할 경우 저작권등의 법률 문제를 야기할 수 있다.
- 그러니 코드를 통해서 데이터를 뽑아오는 정도의 개념만 이해하자.(API를 통한 크롤링을 권고)
Concepts: 데이터 수집(API) 통해서 데이터 수집 후
-> 데이터 정제하기 (분석을 좀 더 잘하기 위해서)
-> 데이터 정제하기( <=>탐색적 자료 분석(시각화, 통계)) // 양 화살표의 의미는 실제 작업 중에는 2과정을 왕래하면서 작업해야함
-> 데이터 분석은 유의미한 데이터를 찾아가는 과정으로 사고의 흐름을 다져야함
-> API 통해서 데이터 수집했는데 매일 업데이트 되는 데이터(ex.국토교통부 부동산 실거래가)이면 일괄처리 함수(ex)처리. py) 만들기 후 자동적용 시키기 = 해당과정을 배치 처리 라고 한다.
배치처리는 어떻게 만드는가?
-윈도우: 스케줄러 프로그램 이용
-Linux에서는 Crontab을 설정한다.
-해당 스크립트 (처리.py)가 정해진 시간에 코드가 동작함.
(전제 조건: 서버가 살아있으면, 윈도우 기준으로는 Desktop이 계속 on상태인 것을 의미함.)
ETL은 Extract, Transform, Load의 약자로, 데이터 처리 과정에서 데이터를 추출(Extract)하고 변환(Transform)한 다음 로드(Load)하는 과정을 의미합니다.
ETL 과정은 데이터 웨어하우징과 데이터 통합의 핵심이며, 여러 소스에서 데이터를 가져와서 목적지 시스템으로 이동시키는 데 사용됩니다.