개발일기 정답찾기

크롤링이란? Python Crawling 시작 - 유딩동 Tistory 본문

IT/crawling scraping

크롤링이란? Python Crawling 시작 - 유딩동 Tistory

유딩동 2021. 7. 12. 13:20

안녕하세요, 유딩동입니다.

크롤링을 진행하게 되었어요.

퇴근하고 꽤 오랜시간 삽질(?) 하던 프로젝트가 마무리 되어 가요

며칠 안보면 또 까먹더라구요

로그성으로 기억하고자, 기록을 남겨 둡니다.

 

1. 크롤링이란?

2. 크롤러 만들기 위한 준비

3. 크롤링 라이브러리

4. 크롤링이 필요한 이유

 


1. 크롤링이란?

알고리즘에 의해 인터넷을 탐색하는 프로그램
동의어 - 스크래퍼, 봇, 스파이더, 지능 에이전트 등

크롤링(crawling) 혹은 스크레이핑(scraping)은 웹 페이지를 그대로 가져와서 거기서 데이터를 추출해 내는 행위다. 크롤링하는 소프트웨어는 크롤러(crawler)라고 부른다.

나무위키도 리그베다 위키를 크롤링해서 시작된 위키며, 나무위키 미러 등은 나무위키를 크롤링한 곳이다.

검색 엔진에서도 유사한 것을 필수적으로 사용하는데, 웹 상의 다양한 정보를 자동으로 검색하고 색인하기 위해 사용한다. 이때는 스파이더(spider), 봇(bot), 지능 에이전트라고도 한다. 사람들이 일일이 해당 사이트의 정보를 검색하는 것이 아니라 컴퓨터 프로그램의 미리 입력된 방식에 따라 끊임없이 새로운 웹 페이지를 찾아 종합하고, 찾은 결과를 이용해 또 새로운 정보를 찾아 색인을 추가하는 작업을 반복 수행한다. 방대한 자료를 검색하는 특징은 있으나 로봇의 검색 기능을 역이용하여 순위를 조작하거나 검색을 피할 수 있는 단점도 있다. 네이버, 구글 등도 이런 봇을 이용해 운영된다.

-나무위키


 

2. 크롤러 만들기 위한 준비

클라이언트, 서버, 프로그래밍 언어
  • 클라이언트
    웹 브라우저 및 웹. 
    앱(스마트폰), 프로그램/웹 (컴퓨터)
  • 서버
    보이지 않는 곳에서 클라이언트 처리를 도와주는 것
  • 프로그래밍언어
    여러 언어로 구현 가능하지만, 접근성이 좋은 파이썬이 가장 많이 사용

 


3. 크롤링 라이브러리

BeautifulSoup, Selenium...

 

BeautifulSoup?

HTML, XML 파일의 정보를 추출해내는 python 라이브러리
html의 id, class, tag를 분석하여 필요한 부분만 추출
  • BeautifulSoup의 문법이 element를 뽑아내는 것이 조금 더 직관적이고 빠르다는 평이 존재
  • Requests/urllib + BeautifulSoup으로 최대한 해결
  • 서버에서 HTML을 다운 받음 → 서버사이드 렌더링을 사용하지 않는 SPA 사이트나, javascipt 렌더링을 필요로 하는 사이트들은 크롤링하기 까다로움
  • soup = BeautifulSoup(html, 'lxml')
  • soup.find_all()은 리스트 형태로 결과값 반환 -> 인덱싱 하여야 함수 활용 가능 (.text, .get..)
  • 부모태그를 가지고 온 경우 더 파싱이 확실해진다 soup.find(부모태그).find(자식태그)

Selenium?

브라우저를 실행시켜 동적인 입력을 가능하게 하는 라이브러리
검색어의 입력 및 변환, 버튼 클릭, 스크롤 조절 등의 동작을 실행
  • 동적 크롤링을 효과적으로 수행, 상대적으로 무거운 편 속도도 많이 느리고, 메모리도 상대적으로 많이 차지
    (멀티프로세스를 사용해서 여러 브라우저로 크롤링 하도록 하면 속도를 일정 부분 개선 가능)
  • driver.page_source 를 통해 원하는 정보를 들고 옴
  • 페이지의 단일 element에 접근하는 메소드
  • 원하는 스크립트 호출 driver.execute_script("원하는 동작")

 

↓ 파이썬 BeautifulSoup 사용예제 ↓

 

[파이썬] 크롤링 BeautifulSoup 사용법, 웹크롤러 만들기 - 유딩동 Tistory

안녕하세요, 유딩동입니다. 웹크롤러를 만들기 위해서 하나씩 차근차근 정리해보려고 합니다. https://11uding.tistory.com/9 [파이썬] 크롤링 requests 패키지 임포트 - 유딩동 Tistory 안녕하세요, 유딩동입

11uding.tistory.com

↓ 파이썬 Selenium 사용예제 ↓

 

[파이썬] 크롤링 Selenium 예제, 웹크롤러 만들기 - 유딩동 Tistory

안녕하세요, 유딩동입니다. BeautifulSoup만 사용하는 것이 한정적이기 때문에 Selenium 예제를 가지고 와 봤어요~! ↓ 파이썬 BeautifulSoup 사용예제 ↓ [파이썬] 크롤링 BeautifulSoup 사용법, 웹크롤러 만들

11uding.tistory.com

 

4. 크롤링이 필요한 이유

element를 뽑아내는 것이 조금 더 직관적이고 빠르다는 평

Requests와 BeautifulSoup으로 최대한 해결
soup = BeautifulSoup(html, 'lxml')
soup.find_all()은 리스트 형태로 결과값 반환 -> 인덱싱 하여야 함수 활용 가능 (.text, .get..)
부모태그를 가지고 온 경우 더 파싱이 확실해진다 soup.find(부모태그).find(자식태그)
Requests와 BeautifulSoup으로 최대한 해결
soup = BeautifulSoup(html, 'lxml')
soup.find_all()은 리스트 형태로 결과값 반환 -> 인덱싱 하여야 함수 활용 가능 (.text, .get..)
부모태그를 가지고 온 경우 더 파싱이 확실해진다 soup.find(부모태그).find(자식태그)
Requests와 BeautifulSoup으로 최대한 해결

빅데이터 생산/사용/수집의 필요성
  • 인공지능, 머신러닝, 딥러닝... 데이터가 많아질수록 정확한 예측이 가능
  • 음성인식, 금융/핀테크, 자동 운전, 검색 엔진 등의 분야에서 사용 가능
  • 데이터 수집 가능한 API가 존재하지 않는다면, 크롤러를 통하여 수집 가능

 

Comments