Python 웹 크롤링하기 PART 2

Python 웹 크롤링하기 PART1을 못 보신 분은 아래 링크를 통해 순서대로 진행해 주세요

 

Python 웹 크롤링 하기 PART 1

Python으로 웹 크롤링하는 방법에 대해 살펴보겠습니다. 예제로 유튜브 크롤링을 진행하려고 합니다. 진짜 크롤링이라기에는 부족하고 단편적인 코드입니다. 진짜 누구에게나 크롤러라고 할 수

lcs1245.tistory.com

 

지난 포스팅에서 우리는

셀레니움으로 크롬 브라우저를 열고 유튜브 홈페이지로 이동했습니다.

이어서 원하는 검색어로 검색하겠습니다.

 

검색하기

실제로 우리가 검색을 한다고 생각해봅시다.

검색창에 검색어를 입력하고 검색 버튼을 누르겠죠??

우리는 코드로 그작업을 진행해야 합니다.

 

먼저 검색창에 검색어를 입력할 텐데요, 그러려면 페이지 내 검색창에 접근해야 합니다.

웹 페이지 element들에 접근하기 위해서 CSS선택자를 사용해 접근하겠습니다.

F12 개발자 도구를 연뒤 개발자 도구 왼쪽 상단에 마우스 모양 클릭 또는 ( Ctrl + Shift + C ) 하시고

검색창에 마우스를 가져다 되면 위 화면처럼 됩니다.

이곳에서 검색창의 id값을 확인할 수 있는데요.

( class 또는 다른 속성들로도 조회가능하지만 id 가 고유하기에 id를 선택자로 검색창에 접근하겠습니다. )

 

from selenium.webdriver.common.by import By
search = driver.find_element(By.ID, 'search');
search.send_keys('검색어');

driver.find_element(By. [속성], [속성값]) 함수를 사용합니다.

By.XPATH, By.CLASS_NAME, By.NAME 등 원하시는 속성으로 element를 찾을 수 있습니다.

 

search 변수에 검색창 element를 할당하고 거기에 검색어라는 문자를 넣었습니다.

'검색어' 부분에는 원하는 검색어를 넣어주시면 됩니다.

 

실행해 보시면 검색창에 내 가설 정한 검색어가 쓰인 것을 볼 수 있습니다.

 

다음으로 검색어를 입력했으니 검색을 실행해야 합니다.

검색 버튼의 속성을 확인한 뒤 마찬가지로 id속성으로 선택하여 클릭하겠습니다.

btnSearch = driver.find_element(By.ID, 'search-icon-legacy');
btnSearch.click();

 

의도한 대로 검색 버튼이 클릭이 되었고, 검색 결과 페이지로 이동했습니다.

실제 개발하실 때 선택자 코드들은 그대로 쓰시기보다 직접 해당 페이지에서

개발자 모드를 통해 HTML 태그의 속성들을 확인 후 쓰시기 바랍니다.

( 시간의 흐름에 따라 속성이 변경될 수 있습니다!! )

 

화면 스크롤 하기

유튜브는 검색 시 모든 콘텐츠들이 출력하는 것이 아니라

일정 개수가 먼저 나온 뒤 페이지를 최하단으로 내리면 또 일정 개수만큼 콘텐츠를 추가 로드합니다.

그래서 내가 원하는 수만큼 화면을 최하단으로 내려서 콘텐츠를 많이 로드하겠습니다.

import time

scroll_Cnt = 5;
while (scroll_Cnt > 1):
    scroll_Cnt = scroll_Cnt - 1;
    print('페이지 스크롤 다운이 ' + str(scroll_Cnt) + '번 남았습니다.');
    
    # scroll to bottom
    driver.execute_script('window.scrollTo(0, document.getElementById("content").scrollHeight);')
    time.sleep(3);

 

위 코드는 5번 돌면서 화면을 아래로 스크롤해주는 코드입니다.

id 가 content인 HTML 태그에 scrollHeight 만큼 화면을 내리는 자바스크립트를 실행합니다.

자바스크립트를 다룰 줄 아신다면

위 방식처럼 원하는 자바스크립트를 만들어 실행할 수 있습니다~

 

이번 포스팅은 여기까지 하겠습니다.