requests 모듈 제한
1. 로그인이 필요한 사이트의 경우 크롤링이 어렵습니다.
(가능하지만 세션 처리 부분이 어렵다)
2. 동적에서 HTML을 만드는 경우
– 스크롤 또는 클릭하면 데이터 생성 → URL 주소가 변경되지 않았지만 데이터가 변경됨
– 테이블, 테이블 형식의 데이터
웹 응용 프로그램을 테스트하는 도구로, 실제로 브라우저를 보고 사람처럼 작동할 수 있습니다.
Python에서 http를 요청하면 Bot으로 판단되면 연결이 끊어질 수 있습니다.
이런 경우를 우회하기 위해 실제 웹 브라우저를 띄운 뒤 http 요청을 보내는 것이다.
즉, 봇이 아닌 사람의 척을 하는 것이다.
셀레늄 설치
selenium 모듈 설치
Chrome Driver 파일 다운로드
브라우저를 제어하기 위한 웹 드라이버 다운로드
(1) Chrome 방문 > 도움말 > Chrome 정보를 클릭
(2) Chrome 버전 확인
(3) Chrome 드라이버 다운로드 사이트 방문(Chrome 검색 > ‘Chrome Driver’)
https://chromedriver.chromium.org/downloads
(4) 버전에 맞는 드라이버 설치
연습
selenium을 사용한 이웃 자동 연결
# 모듈 선언
from selenium import webdriver # seenium 모듈에서 webdriver 함수 사용하겠다.
# chromdriver가 설치된 위치를 driver라는 변수에 저장
# webdriver.Chrome 함수의 결과를 driver라는 변수에 저장
# ./ 는 현재 폴더를 의미
driver = webdriver.Chrome('./chromdriver')
# get 함수를 이용해 네이버에 접속 (웹사이트 열기)
driver.get('http://naver.com')
#
print(driver.page_source)
네이버 자동 로그인
from selenium import webdriver
friver = webdriver.Chrome('.chromdriver')
# .get - URL 이동 기능
path="https://nid.naver.com/nidlogin.login?mode=form&url=https%3A%2F%2Fwww.naver.com"
driver.get('path')
# execute_script 함수를 사용하여 자바스크립트로 아이디, 패스워드를 넘겨준다.
driver.execute_script("document.getElementsByName('id')(0).value="실제 ID"")
driver.execute_script("document.getElementsByName('id')(0).value="실제 PW"")
# '//*(@id="log.login")' 이 경로로 접근하여 로그인 클릭
driver.find_element_by_xpath('//*(@id="log.login")').click()
# 브라우저 닫기
driver.close()