▶동적 웹크롤링 - selenium
- Selenium 패키지
크롤링을 하다보면 무엇인가 입력하거나 특정 버튼을 눌러야 하는 상황이 발생하는데 컴퓨터가 그런 행동을 대신 할 수 있도록 해주는 패키지
※설치 방법
VS CODE 터미널 창에 위의 코드 입력
설치 완료!
2. 사용 방법
① 관련 패키지 import
② 크롬 드라이버 실행
크롬 드라이버는 컴퓨터가 크롬 웹 브라우저를 다룰 수 있도록 해주는 프로그램으로 구글에서 제공해준다. (별도 다운로드 필요X)
이렇게 입력하면 크롬 드라이버로 구글 웹페이지가 열린다.
▶selenium으로 화면 조작
① 조작을 원하는 버튼이나 입력창의 html 파악
② 아래의 두 함수에 html 정보를 입력해서 객체(버튼/입력창 등) 선택
- find_element(By.ID)
- find_element(By.CLASS_NAME)
- find_element(By.XPATH)
- find_element(By.CSS_SELECTOR)
③ 기능 동작 관련 함수로 원하는 기능 조작
- 클릭 : .click( )
- 키 입력: .send_keys( )
<예시>
Step 1. 원하는 버튼의 html 타겟팅
크롬 실행 -> 개발자 도구 -> 검색창 부분 클릭 -> 개발자 도구에 검색창의 html 부분이 나타남 -> class 속성값 부분을 더블클릭하여 복사
※ 주의사항!
class명이 위의 사진 속 gLFyf gsfi와 같이 빈칸이 존재하는 경우는 빈칸을 점(.)으로 변경해주어야 한다! 즉, 클래스명을 gLFyf.gsfi라고 입력해준다.
Step 2. selenium으로 타겟팅한 html 찾기
Selenium의 find_element( ) 함수에 복사해놓은 클래스명 (gLFyf.gsfi)을 ( ) 안에 넣어서 크롬 드라이버가 알아먹을 수 있게 변환한다.
이때 클래스명 앞에 로케이터(Locator)라는 코드를 붙여줘야 한다!
코드 1. 모듈 import 및 구글 드라이버를 통해 구글 접속
※여기서 time.sleep(3)으로 하니까 구글 드라이버가 3초밖에 생성이 안되었다. 1000정도로 바꾸고 만약 종료하고 싶으면 ctrl + c를 눌러 종료하자!
코드 2. find_element() 함수로 구글 드라이버가 검색창 찾음
코드 2에서 xpath는 아까 찾았던 html 코드 위에서 '우클릭' -> 'Copy Xpath'를 클릭 -> 클립보드에 //*[@id="google_search"] 라는 xpath가 저장 -> 코드에 넣기
Step 3. 원하는 조작 수행하도록 명령 내리기
- 클릭 : .click( )
- 키 입력: .send_keys( )
코드
search_box.send_keys('검색어') : 검색창에 검색어 입력
search_box.send_keys(Keys.RETURN) : 엔터키 치는 것과 동일
※ 참고로 Google 검색 버튼 타겟팅 해주고 .click( ) 함수로 '마우스 클릭' 해줘도 엔터키를 입력한 것과 동일한 결과를 얻을 수 있다.
▶동적 웹크롤링 - 텍스트, 하이퍼링크, 이미지 가져오기
웹크롤링(1)의 정적 크롤링에서의 방식과 거의 동일하다!
웹크롤링(1)에서 배운 1,2번 단계(html 문서 싹 긁어와서 파싱)에 대한 코드는 아래와 같다.
이후 f12로 개발자 도구로 들어가 -> 크롤링 원하는 부분을 selenium 패키지로 가져와야한다.
① 텍스트 추출: .text
선택자(css selector)를 이용해 원하는 부분의 html을 변수에 저장해준 후 아래와 같이 for 문과 .text 함수를 이용해준다.
코드
실행 결과
② 링크 추출: .get_attribute('href')
href 속성은 news_titles 변수에 저장되어 있어 바로 for문 작성(정적 크롤링과 같음)
코드
실행 결과
③ 이미지 추출: .get_attribute('src')
이것도 정적 크롤링 방식과 같다.
1. 이미지 주소(src)를 가지고 있는 html을 news_thumnail 변수에 저장
2. 이미지 다운로드를 위해서 해당 주소들을 리스트(link_thumnail)에 append 함수를 이용해 하나씩 삽입
3. 사진을 다운로드 받아서 내 PC에 저장하기 위해서 저장할 폴더를 만들고, src 주소를 이용해 다운로드
※폴더 생성에는 os 모듈과 urllib.request 패키지의 urlretrieve 함수가 필요하지만 모두 다 파이썬 내장 라이브러리이므로 따로 설치해주실 필요 없이 import 해주면 된다.
코드
실행 결과
'2024 SWLUG > 파이썬 프로젝트 - 크롤러' 카테고리의 다른 글
검색/크롤링/스크래핑 (0) | 2024.05.22 |
---|---|
웹크롤링(1) (0) | 2024.05.22 |
파이썬 개발환경 구축 (0) | 2024.05.22 |