Headless 크롬

2023. 4. 29. 17:41·python/python_selenium
from bs4 import BeautifulSoup
import time
from selenium import webdriver

options = webdriver.ChromeOptions()
# headless 즉, 창을 띄우지않고 랜더링을 통해 크롤링 가능
# 다만 해당의 경우, user-agent가 headless로 인식되어 몇몇 사이트에서 막을 수 있다.
options.headless = True
options.add_argument("window-size=1920x1080")
# 아래와 같이 user-agent를 나와 같은 상태로 만들 수 있음.
options.add_argument("user-agent = Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/112.0.0.0 Safari/537.36")

browser = webdriver.Chrome(options= options)
url = "<https://play.google.com/store/games>"
browser.get(url)

time.sleep(1)

browser.execute_script("window.scrollTo(0,1080)")
browser.execute_script("window.scrollTo(0,document.body.scrollHeight)")

interval = 2
pre_height = browser.execute_script("return document.body.scrollHeight")

while True:
    browser.execute_script("window.scrollTo(0,document.body.scrollHeight)")
    # 페이지 로딩 대기
    time.sleep(interval)
    curr_height = browser.execute_script("return document.body.scrollHeight")
    if pre_height == curr_height:
        break
    pre_height = curr_height

print("스크롤 완료")

# 창이 없기 때문에 잘 작동하는지 확인하기 어렵다.
# 이럴 때 아래와 같이 스크린샷 파일로 현재 상태를 저장할 수 있음.
browser.get_screenshot_as_file("google_game.png")

soup = BeautifulSoup(browser.page_source, "lxml")
  • 브라우저를 띄우게 되면 메모리 소요가 높고 속도가 느림.
  • 브라우저를 띄울 필요 없이 서버에서 웹스크래핑 작업을 할 때 유용함.
  • options = webdriver.ChromeOptions() options.headless = True
    browser = webdriver.Chrome(options= options) 를 사용해서
    webdriver의 옵션에 headless 기능을 추가함.
  • user-agent가 headless가 되어 일부 웹사이트에서는 접근을 막을 수 있음.
    ㄴ user-agent를 지정함으로써 해당 웹사이트에서도 크롤링 가능.
  • browser.get_screenshot_as_file("fime_name") 을 통해 스크린샷 파일로 현재상태 확인 가능.

'python > python_selenium' 카테고리의 다른 글

selenium_quiz2  (0) 2023.05.01
selenium_quiz1  (0) 2023.04.30
Selenium 활용2  (0) 2023.04.29
Selenium 활용1  (0) 2023.04.26
Selenium 심화  (0) 2023.04.25
'python/python_selenium' 카테고리의 다른 글
  • selenium_quiz2
  • selenium_quiz1
  • Selenium 활용2
  • Selenium 활용1
몽자비루
몽자비루
코딩공부 정리용 블로그입니다.
  • 몽자비루
    공부하는 블로그
    몽자비루
  • 전체
    오늘
    어제
    • 분류 전체보기 (188)
      • python (30)
        • python_selenium (16)
        • python_pygame (3)
      • appium (0)
      • 쿠버네티스 (60)
        • linux (8)
        • shell programming (8)
        • docker (18)
        • cka (23)
      • postman&API (16)
      • QA성장하기 (33)
        • 개발자에서 아키텍트로 스터디 (6)
        • 소프트웨어 공학 이해도 높이기 (6)
        • 테스팅 전문 지식 쌓기 (18)
        • 제4회 QA conference (3)
      • 에러일기 (1)
      • Server&load (35)
        • AWS (27)
        • load test (5)
        • CI CD (3)
        • Jmeter (0)
      • RAG 을 활용하여 LLM 만들어보기 (12)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    qa 컨퍼런스
    쿠버네티스
    도커
    로스트아크
    포스트맨
    postman
    테스트 결과보고서
    linux
    e2c
    qa conference
    k8s
    로스트아크api
    LOSTARK
    앱공존성
    테스트스크립트
    개발자에서아키텍트로
    스터디
    qa
    리눅스
    vi에디터
    application log
    네트워크 테스트
    공존성테스트
    애플리케이션로그
    QAKOREA
    python
    cka
    .cpu
    API
    사드웨어리소스
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
몽자비루
Headless 크롬
상단으로

티스토리툴바