Python Web Crowling

Back/Python 2022. 12. 21.
웹 크롤링(Web Crowling)이란?
웹 페이지를 탐색하고 그 정보를 가져와 추출 및 가공하는 것즉, 웹(Web)에 있는 데이터를 수집해서 저장하는 일련의 과정
웹 크롤러(Web Crawler)란?
사용자가 보다 효율적으로 검색할 수 있도록 다운로드한 페이지를 인덱싱하는 검색 엔진에서 처리할 페이지를 복사하는 도구

 

빅데이터 개념 및 특성

디지털 환경에서 생성되는 수치, 문자, 이미지, 영상 데이터를 모두 포함하는 대규모 데이터

V5라고 부름

 

더보기
정리 되지 않은 데이터 빠르게 생성

빅데이터 형태에 따른 구분 : 정형 데이터(Stuctured)

데이터베이스의 정해진 규칙에 맞게 데이터가 들어간 데이터 
        ex) 관계DB, 스프레드시트, CSV…

 

빅데이터 형태에 따른 구분 : 반정형 데이터(Semi-Structured)

고정된 필드에 저장된 데이터는 아니지만, 메타 데이터 및 스키마를 포함하는 데이터
        ex) XML, HTML 텍스트, JSON … 

 

빅데이터 형태에 따른 구분 : 반정형 데이터(Semi-Structured)

고정된 필드에 저장되어 있지 않는 데이터
        ex) ex) 소셜데이터(트위터, 페이스북), 영상, 이미지, 음성, 텍스트 

 

 

더보기
데이터 수집&저장 → 데이터 처리&분석 →데이터 시각화&응용

 

더보기

웹 크롤러의 작동 방식

1. 클라이언트에서 수집할 Page URL 코드 입력2.

웹 크롤러의 작동 방식

Web Site의 HTML 문서 요청 → 크롤러를 이용하여 데이터 추출 → 추출한 데이터를 가공 및 저장

 

따라서 웹 크롤링을 위해서는 HTTP 구조에 대한 이해가 필요하다.

그럼 HTTP (HyperText Transfer Protocol)이란 무엇일까?

 

더보기

 

 하이퍼텍스트(HTML) 문서를 교환하기 위해 만들어진 protocol(통신 규약)
 웹상에서 네트워크로 서버끼리 통신을 할 때 어떠한 형식으로 통신할 지 규정해 놓은 “통신 형식” 혹은 “통신 구조”
 서버와 클라이언트 간 통신, 서버 간 통신에 사용
 통신방식 : 요청/응답(Request/Response)구조

 

HTTP 구조

 1. HTTP요청 시에 헤더 정보가 딕셔너리(Key/Value) 형식으로 세팅

 2. HTTP요청/응답 시에 대개 브라우저에서는 다음 헤더 설정
       user-Agent : 브라우저의 정보
       referer : 이전 페이지 URL(어떤 페이지를 거쳐서 왔는가?)

 3. 크롤링을 할 때는 서비스에 따라 user-agentreferer 설정 필요
      ex) 네이버 검색, 네이버 웹툰 등

드문 문법 : ifr = iframe → 웹문서 안에 웹문서를 넣는다

 

 

웹 크롤링 도구는 무엇인가?

 

Web Page가 어떤 구조(HTML)로 되어 있는가

어떻게(CSS Selectoir) 원하는 데이터를 추출할 것인가

requests

접근할 웹 페이지의 데이터를 요청/응답 받기 위한 라이브러리

메소드 기능설명
request.get(url) 원하는 웹 페이지를 요청/응답할 경우
request.get(url).status_code 요청에 대한 응답 상태 반환
request.get(url, headers={"UserAgent" : "" , "Referer" : "" ...}) 웹페이지 요청 시, 클라이언트 정보를 넘길 경우
request.get(url, params ={"key":"value","key":"value" ...}) 웹페이지 요청 시, 데이터를 넘길 경우(GET 방식)
BeautifulSoup


HTML문서에서 원하는 데이터를 추출하기 쉽게 해주는 라이브러리
 ⦁ 웹 페이지 내 데이터를 원하는 정보로 가공

lxml 시간적으로 덜 걸림

res = req.get(’http://www.naver.com’)
BeautifulSoup(res.text, 'lxml')
# res.text = data : request 라이브러리를 활용해서 응답 받은 데이터
# lxml = parser : 웹 페이지 내 데이터를 사용자가 원하는 형식으로 추출해 가공하는 프로그램
								# (lxml, html.parser, html5lilb)​
Selenium


동적인 페이지를 제어하고 내용을 가져오기 위한 라이브러리
웹 자동화 테스트 도구 : 브라우저 제어 - 키보드 입력, 클릭, 스크롤, 이전 페이지 이동 등등

 

'Back > Python' 카테고리의 다른 글

Python_Library_Test1  (0) 2022.12.13