동적인 웹 페이지, 즉 자바스크립트로 구성된 페이지는 일반적인(requests이용한) 크롤링을 통해 가져오기 어렵다. selenium이 등장하면서 간편하게 구현할 수 있게 되었다. selenium 기초 설정을 알아보자.
1. selenium 설치 : 별거없다. 아래 명령어 입력하고 엔터 치면 자동 설치된다.
pip install selenium
2. 코드 작성
from selenium import webdriver
url = "https://naver.com"
driver = webdriver.Chrome()
driver.get(url)
selenium을 통한 네이버 접속 소스다. 이보다 간단할 순 없다.
3. 코드 추가 (options 설정)
Options을 설정한다.
(1) 프로그램 실행 시 웹 창을 최대화로 열기기
options.add_argument("--start-maximized")
(2) 헤더정보 설정
- 윈도우 PC 헤더 : naver.com으로 실행된다.
options.add_argument("User-Agent=Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/123.0.0.0 Safari/537.36")
- 안드로이드 모바일 헤더 : 일반 url로 코딩을 해도 모바일 URL로 실행된다. .
options.add_argument("user-agent=Mozilla/5.0 (Linux; Android 13; SM-G981B) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/116.0.0.0 Mobile Safari/537.36")
(3) 브라우저 창 유지하기 : 화면이 자동으로 종료되지 않고 유지된다.
options.add_experimental_option("detach",True)
(4) 로깅 및 안내 문자 제외하기 : 디버그 화면 에러 로그와 브라우저 크롤링 안내 페이지를 없애준다.
options.add_experimental_option("excludeSwitches",["enable-logging","enable-automation"])
주의할 점은 excludeSwitches 값들은 list인데, 최종 설정값을 따른다. 그래서 이걸 각각 설정하면 excludeSwitches 는 최종값이 된다. 아래와 같이 코딩하면 enable-logging이 설정되지 않는다. 반드시 리스트에 포함하여 하나로 설정하자.
options.add_experimental_option("excludeSwitches",["enable-logging"])
options.add_experimental_option("excludeSwitches",["enable-automation"])
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
import time
url = "https://naver.com"
options = Options()
options.add_argument("--start-maximized")
options.add_argument("User-Agent=Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/123.0.0.0 Safari/537.36")
options.add_experimental_option("detach",True)
options.add_experimental_option("excludeSwitches",["enable-logging","enable-automation"])
driver = webdriver.Chrome(options=options)
driver.get(url)
time.sleep(3)
driver.close()
'코드리뷰 > chatGPT(Python)코드' 카테고리의 다른 글
웹 크롤링 기초 - 셀레니움으로네이버 기사 제목 가져오기 (1) | 2024.03.23 |
---|---|
웹 크롤링 기초 - 네이버 헤더 정보 가져와 설정하기 (1) | 2024.03.23 |
웹 크롤링 기초 - 네이버 기사 제목 가져오기 (0) | 2024.03.22 |
댓글