반응형
셀레니엄 패키지 (Selenium Package)
- 웹 어플리케이션 테스트를 위한 프레임워크이다.
- 다양한 브라우저 작동을 지원하며 크롤링에도 활용가능하다.
- 정적, 동적페이지 크롤링으로도 접근이 불가능한 데이터에 접근할 때 유용하다.
- 현존하는 거의 모든 웹브라우저를 다양한 언어를 통해 제어 가능하다.
# 셀레니움 설치
!pip3 install selenium # 맥
!pip install selenium # 윈도우
크롬 드라이버 (Chrome Driver)
- 크롬 버전을 확인하고, (chrome://settings/help)
- 크롬 드라이버를 설치한다. https://chromedriver.chromium.org/downloads
3. 다운로드된 크롬 드라이버를 작업폴더에 넣는다.
셀레니움으로 크롤링하기
먼저, 필요한 패키지를 불러온다.
# 셀레니움 import
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from bs4 import BeautifulSoup
크롬 드라이버 객체를 선언한다.
# 크롬창 열기
driver = webdriver.Chrome('./chromedriver')
# 윈도우 사용자
# driver = webdriver.Chrome('.//chromedriver.exe')
크롬 드라이버에 원하는 url을 넣고 실행한다.
# 설정한 url로 데이터 get함수로 요청
url = 'https://naver.com'
driver.get(url) # driver가 크롬창을 제어하고있는 객체이다.
크롬 개발자도구에서 원하는 홈페이지 태그를 선택하고 XPath를 복사한다.
# 키워드를 입력받아 검색창의 xpath에 send_keys 함수로 키워드 입력
driver.find_element_by_xpath('//*[@id="query"]').send_keys('오징어 게임') # 입력해준다.
driver.find_element_by_xpath('//*[@id="query"]').click() # 클릭해준다.
위와 같은 방식으로 코드를 통해 크롬에 접속하여 조작을 할 수 있으면,
자동화 및 크롤링을 진행할 수 있다.
심화
# 포스팅 image url 따오기
image = driver.find_element_by_css_selector('img.FFVAD')
# img alt가 들어가 있는 곳을 선택
# 크롬 드라이버 안에 css selecter로 해당 클래스의 이미지를 저장한다.
# image 변수에서 src 속성에 접근
image_url = image.get_attribute('src')
# 이미지 저장을 위한 패키지
import urllib
# 이미지 저장
urllib.request.urlretrieve(image_url, './test_img.jpg')
등등 인스타의 이미지를 불러올 수도 있고, 활용이 다양하다.
Reference:
https://selenium-python.readthedocs.io/
반응형
'Skills > Python' 카테고리의 다른 글
[Python] Youtube API 크롤링 (0) | 2021.11.09 |
---|---|
[Python] API를 통해 크롤링하기 (0) | 2021.11.08 |
[Python] 크롤링이 잘되었는지 확인하는 법 & 차단 방지하는 법 (0) | 2021.11.08 |
[Python] selenium 패키지 사용을 위한 chromedriver 설치 및 오류해결(Mac OS) (0) | 2021.11.08 |
[Python] 웹 페이지 크롤링 기초 (0) | 2021.11.08 |