🚩 데이터 크롤링(data crawling)

🔹크롤러(crawler)

: 자동화된 방법으로 웹을 탐색하는 컴퓨터 프로그램

🌈 웹 크롤링(web crawling)

: 웹 서비스 내 정보를 수집하는 일
❗requests가 잘 되었는지, 데이터를 잘 가져왔는지 확인

🔸웹 크롤링 방법
1️⃣  정보를 가져오고자 하는 url 정의
🧷url = ''

2️⃣  url을 requests로 정보 요청
🧷response = requests.get/post(url)

3️⃣  받아온 text정보를 html변환
🧷html = BeautifulSoup(response.text, 'html.parser')
🖐️파라미터
✅변환할 데이터 형태('html.parser' - 생략 가능)

4️⃣  가져온 html에서 필요한 정보만 선별
🧷html.select('html 태그명')
🧷html.select('html 태그명').text - 가져온 태그에서 텍스트만 출력

🔸 requests 요청 객체의 상태 코드
🧷response.status_code
🌲100
🌲200 : 성공 - requests.codes.ok
🌲300 : 사이트 이동 정보 제공
🌲400 : 유저의 요청 문제 - requests.codes_NOT_FOUND
🌲500 : 서버 문제

🌈 셀렉터

: html에서 원하는 내용을 찾기 위한 용도
: 셀렉트 해서 가져오는 데이터의 자료구조 형태 잘 보고 반복문이나 정제 필요

🔸단일 셀렉터
🧷html.select('태그명')
🧷html.select('태그명.클래스명')
🧷html.select('태그명.id값') - id는 웹페이지에서 하나의 고유값을 가짐

🔸복합 셀렉터
🧷html.select('태그명.클래스명')

🔸경로 셀렉터
: 상위 태그에서 하위 태그로 가면서 선택
🧷태그명 > 하위 태그명 > 하위 태그명
🧷태그명 하위 태그명 하위 태그명

🌈 동적페이지 크롤링

: 동적페이지의 숨은 url 사용
: 동적페이지에 요청을 할 때 웹 정책이 필요한 정보를 같이 전달 해줘야 함(referer, user-agent)

🔸동적페이지 크롤링 방법

: 개발자 도구 → 네트워크
: 동적 페이지 클릭하고 뜨는 문서에서 숨은 url, referer, user-agent 정보 얻음
: header = {'referer' : , 'user-agent'} - 헤더에 두 가지 정보를 저장하고 request 요청시 헤더 정보 추가
🧷response = requests.get(url, headers = header)
🌲referer
: 숨은 url에 접근하기 위해 사용자가 머물렀던 페이지 주소를 같이 전달
🌲user-agent
: 요청 객체가 컴퓨터가 아니므로 내가 쓰는 웹 브라우저 정보 전달

🔸JSON 파싱

: html text 형태의 데이터만을 사용하지 않고 json, xml 형식의 데이터도 통신에 사용
🧷response.text로 자료구조 형태 파악
→ 딕셔너리 형태라면 json 형식
🌲json 파일 변환
🧷import json
data = json.loads(response.text) - json 파일 변환
df = pd.DataFrame(data['key']) - json → 데이터프레임 변환

🌈 APIs

: 웹 서비스 제공자가 사용자에게 정보를 제공하기 위한 통신프로그램
: requests → response 형태의 크롤링 방법과 동일한 형태

🔸공공데이터 API

: 필요한 데이터의 API 사용 신청을 진행하고 승인을 받아야 함
: 승인이 떨어지면 url, key값, 필수 파라미터 제공
🧷url 정보는 end point 값
🧷header 대신 params 변수 사용
→ params{'serviceKey' : , 'returnType' : } 등 사용하는 API의 지정된 필수 파라미터 전달
🧷response = requests.get(url, params = params)
➡️요청된 정보가 json파일이라면 json 파일 변환
➡️BeautifulSoup을 활용하여 필요한 부분을 html 파일 변환을 하여 원하는 텍스트 추출

profile
To be Data Analysist

0개의 댓글