반응형

안녕하세요, 왕초보 코린이를 위한 코딩유치원에 오신 것을 환영합니다.

코딩유치원에서는 파이썬 기초부터 사무자동화, 웹크롤링, 데이터 분석, 머신러닝 등의 다양한 패키지까지 초보자도 알기 쉽도록 내용을 정리해 놓았습니다.

업무는 물론 투자에도 도움이 될만한 전자공시시스템(DART) 텔레그램(Telegram) 관련 패키지도 배울 수 있으니 많은 관심 부탁드립니다.

 

 

 

[웹 크롤링 기초]

2021.03.22 - [파이썬 패키지/웹 크롤링] - [Python/웹 크롤링] 파이썬 웹 크롤링 기초 of 기초

2021.03.23 - [파이썬 패키지/웹 크롤링] - [Python/웹 크롤링] 크롬드라이버 크롬 버전에 맞춰서 설치하는법

2021.03.24 - [파이썬 패키지/웹 크롤링] - [Python/웹 크롤링] 파이썬 웹 크롤링 관련 패키지 3종 총정리

2021.03.27 - [파이썬 패키지/웹 크롤링] - [Python/웹 크롤링] 파이썬 웹 크롤링을 위한 속성 HTML, CSS 요약 정리

2021.03.28 - [파이썬 패키지/웹 크롤링] - [Python/웹 크롤링] 동적/정적 페이지 차이와 그에 따른 크롤링 방법 간단정리

 

[정적 웹크롤링]

2021.03.30 - [파이썬 패키지/웹 크롤링] - [Python/웹 크롤링] 파이썬 웹 크롤링 정적 수집 방법 개념 정리_find, find_all, select, select_one

2021.04.02 - [파이썬 패키지/웹 크롤링] - [Python/Requests/Beautifulsoup] 네이버 뉴스 기사 제목 크롤링을 통한 정적 수집 기초 정리

2021.04.06 - [파이썬 패키지/웹 크롤링] - [Python/Reuqests/Beautifulsoup] 파이썬 정적 웹크롤링 텍스트, 이미지, 하이퍼링크, 속성 가져오는 법

 

[동적 웹크롤링]

2021.04.03 - [분류 전체보기] - [코딩유치원] 네이버 뉴스 기사 제목 크롤링을 통한 동적 수집 기초 정리(selenium, beautifulsoup)

2021.06.21 - [파이썬 패키지/웹 크롤링] - [Python/Selenium] 파이썬 동적 웹크롤링 텍스트, 하이퍼링크, 이미지, 속성 가져오는 법

2021.05.22 - [파이썬 패키지/GUI 프로그램] - [파이썬 GUI 프로그래밍] 잡플래닛 리뷰 정보 크롤링 GUI 프로그램

 


 

정적/동적 웹 페이지

웹 크롤링을 하면서 여러분들이 만나게 되는 페이지는 크게 두 가지로 분류할 수 있습니다. 

정지해있다는 의미의 정적(static)과 움직인다는 의미의 동적(dynamic)으로 말이죠.

이 두 가지의 차이점에 대한 이해가 선행되지 않으면 여러분들의 코드는 제대로 작동되지 않을 것입니다.

 

1) 정적 웹 페이지

정적 웹 페이지란 서버(Web Server)에 미리 저장된 파일이 그대로 전달되는 웹 페이지를 말합니다. 

즉, 제가 특정 웹페이지의 url 주소만 주소창에 입력하면 웹 브라우저로 HTML 정보를 마음대로 가져다 쓸 수 있는 것입니다.

동적 웹 페이지와 가장 큰 차이점은 **'url 주소 외에는 아무 것도 필요없다'** 는 점입니다. 아래에서도 설명 하겠지만 만약 마우스 휠을 스크롤 다운 했는데, url에 변화는 없고 페이지에 내용이 추가된다면 그 페이지는 동적 웹 페이지입니다.

말이 어려울 수 있으니 정적 웹 페이지의 예를 보여드리겠습니다.

 

case 1. 네이버 검색 결과

1) 네이버를 열어서 검색창에 '손흥민'을 검색합니다.
2) 검색 결과의 url을 복사하시고 다시 주소창에 해당 url을 입력합니다.
3) 처음 검색결과와 동일한 페이지를 볼 수 있습니다.

 

 

2) 동적 웹 페이지

 

동적 웹페이지란 url만으로는 들어갈 수 없는 웹페이지를 말합니다.

혹시 들어가지더라도 url의 변화가 없는데도 실시간으로 내용이 계속해서 추가되거나 수정된다면 동적 웹 페이지입니다.

여기서 무언가를 클릭해서 페이지가 변경되는 것은 다른 경우입니다.

 

case 1. 로그인을 해야만 접속 가능한 네이버 메일

 

 

 

case2. 보고 있는 위치에 출력 결과와 url이 계속 변하는 네이버 지도

 

 

 

case 3. 드래그를 아래로 내리면 계속 새로운 사진과 영상이 나타나는 인스타그램과 유튜브

 

 

저는 이 차이를 모르고 여러 웹 크롤링 책과 강의에서 나오는 예제 코드를 변경해서 사용하려다가 많은 시행착오를 겪었답니다.

 

네이버 지도(동적 페이지)에서 검색 결과를 수집하려고 하면서, 정적 수집 방법을 사용해서 몇 시간을 쩔쩔 맸던게 기억나네요.

 


정적/동적 수집

 

정적 페이지에서 정보를 수집 하느냐, 동적 페이지를 하느냐에 따라서 사용되는 파이썬 패키지는 달라집니다. 간단히 표로 정리해보면 아래와 같습니다.

  정적 수집 동적 수집
사용 패키지 requests / urllib selenium
수집 커버리지 정적 웹 페이지 정적/동적 웹 페이지
수집 속도 빠름 (별도 페이지 조작 필요 X) 상대적으로 느림
파싱 패키지 beautifulsoup beautifulsoup / selenium

 

정적 수집

정적 수집은 멈춰있는 페이지의 html을 requests 혹은 urllib 패키지를 이용해 가져와서 beautifulsoup 패키지로 파싱하여 원하는 정보를 수집합니다. 여기서 파싱(parsing)이란 복잡한 html 문서를 잘 분류, 정리하여 다루기 쉽게 바꾸는 작업을 말합니다.

 

바로 해당 url의 html을 받아와서 수집하기 때문에 수집 속도가 빠르다는 특징이 있지만, 여기저기 모두 사용할 수 있는 범용성은 떨어진다는 특징이 있습니다.

 

동적 수집

동적 수집은 계속 움직이는 페이지를 다루기 위해서 selenium 패키지로 chromdriver를 제어합니다. 특정 url로 접속해서 로그인을 하거나 버튼을 클릭하는 식으로 원하는 정보가 있는 페이지까지 도달합니다.

 

이때 driver.find_elements_by_  driver.find_element( ) 함수를 이용해 html을 곧바로 지목해서 추출할 수도 있고, driver.page_source 함수를 이용해 전체 html을 받아 올 수도 있습니다. html 전체를 받아와서 beautifulsoup로 하면, 페이지에서 하나하나 가져오는 것보다 수집 속도가 빠른 특징이 있습니다. 이 부분은 선택사항이지만 둘 다 알아두시면 좋겠습니다. 다른 코드를 이해하는 목적으로 말이죠.

 

동적 수집의 특징은 정적 수집과 반대라고 생각하시면 됩니다. 브라우저를 직접 조작하고 브라우저가 실행될때까지 기다려주기도 해야해서 그 속도가 느리다는 특징이있습니다. 하지만 이는 상대적인 것이지 사람이 직접하는 것보다는 훨~씬 빠르니 기본적으로 동적 수집을 하고 필요시 정적 수집 방식을 이용하는게 어떨까 하는 것이 개인적인 생각입니다. 정적/동적 웹 페이지에 모두 적용이 가능하니까요!


오늘 내용은 여기까지입니다.

 

다음 시간에는 네이버 뉴스에서 특정 주제의 기사를 검색하고 제목, 날짜, 언론사를 수집해보는 예제를 통해서 동적/정적 수집을 어떻게 하는지에 대해 알아보겠습니다.

반응형

+ Recent posts