셀레니움 headless 옵션 추가시 크롤링 안되는 현상
1097
작성한 질문수 4
안녕하세요.
셀레니움으로 개발된 프로그램을 GUI로 감싸서 만들어 보려고 하고 있습니다.
아래 코드에서 크롬 창이 뜨도록 하면 잘 실행되면 elem에 데이터가 들어옴을 확인할 수 있습니다.

1번을 확인 후 headless 옵션을 주고 실행하면 창은 뜨지 않고 실행되나, 데이터를 가져오지 못합니다.
구글링도 해보고, GPT도 물어봤지만 답을 찾을 수 없어서 문의 드리게 되었습니다.
확인 부탁드립니다.
from selenium import webdriver
# from selenium.webdriver.chrome.options import Options
from selenium.webdriver.chrome.service import Service
from webdriver_manager.chrome import ChromeDriverManager # 크롬 드라이버 자동 업데이트을 위한 모듈
from selenium.webdriver.common.by import By
# from selenium.webdriver.common.keys import Keys
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver import ActionChains # 스크롤시 사용
from selenium.webdriver.support import expected_conditions as EC
import time
from bs4 import BeautifulSoup as bts
import pandas as pd
import os
from datetime import datetime
###################################
# Window 열고, 네이버 지도에서 검색
###################################
options = webdriver.ChromeOptions()
options.add_argument('headless')
# service = Service(ChromeDriverManager().install())
# driver = webdriver.Chrome(options=options)
driver = webdriver.Chrome()
# driver = webdriver.Chrome(ChromeDriverManager().install())
action = ActionChains(driver)
keyword = '서울 강남구 정보통신'
url = f'https://map.naver.com/p/search/{keyword}'
driver.get(url)
# WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.XPATH, '//*[@id="searchIframe"]')))
time.sleep(20)
search_iframe()
elem = driver.find_elements(By.CSS_SELECTOR, '.place_bluelink.C6RjW > span.YwYLL') # 이름
name_list = [e.text for e in elem]
elem
답변 2
0
안녕하세요, 인프런 AI 인턴입니다. 초칼라님의 질문에 관해, 셀레니움을 사용하여 headless 모드로 크롤링을 할 때 데이터를 가져오지 못하는 문제에 대해 도움이 될만한 답변을 안내드리겠습니다.
셀레니움에서 headless 모드를 활용할 때, 일부 웹 페이지가 제대로 로드되지 않거나, 특정 요소가 정상적으로 렌더링되지 않는 경우가 있습니다. 이는 headless 모드에서는 브라우저의 창 크기가 설정되지 않거나 다르게 인식될 수 있기 때문입니다. 따라서, 명시적으로 창 크기를 지정해주는 옵션을 추가해 주는 것이 좋습니다.
예를 들어, 다음과 같이 코드에 window-size 옵션을 추가할 수 있습니다:
options = webdriver.ChromeOptions()
options.add_argument('headless')
options.add_argument('window-size=1920x1080') # 창 크기 명시
아래는 관련한 기존 답변의 일부를 가져온 예시입니다:
- 셀레니움 기본설정 강의를 들으며 코드를 작성했는데 실행되질 않습니다.. - 해당 게시글에서는 비슷한 환경에서 셀레니움을 사용할 때 발생할 수 있는 문제 및 해결 방법에 관해 다루고 있습니다. 특히, 창 크기를 조정하는 방법이나 headless 모드에서 발생할 수 있는 다양한 이슈에 대한 정보를 얻을 수 있습니다.
이와 같이 창 크기를 지정하면, headless 모드에서도 페이지가 예상대로 로드되어 원하는 데이터를 추출하는 데 도움이 될 수 있습니다. 또한, 페이지 로드를 기다리는 과정에서 time.sleep() 대신에 WebDriverWait를 더 적극적으로 활용하여 동적 페이지의 로드 완료를 기다리는 것이 좋습니다. 이 방법을 통해 원활하게 데이터를 크롤링할 수 있을 것입니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.
셀레니움 환경설정 오류
0
52
2
네이버 로그인 관련
0
280
2
안녕하세요 셀레니움에 대해서 질문
0
88
1
크롤링 연습사이트 문의
0
102
2
선택자 질문
0
74
2
'특정 요소가 나타날 때까지 스크롤' 부분 에러
0
78
2
자동 로그인 질문
0
89
2
44강 제목, 링크
0
107
1
원하는 값이 없을 때
0
91
2
크롤링한 링크가 엑셀로 들어가면 작동이 안되요
0
230
2
셀레니움 PDF자료는 받을 수 있나요
0
100
2
글목록 추출하기
0
100
2
메일 자동화 로그인 중복방지문자해결 오류 및 명시적 대기 질문
0
91
2
강의 노트가 어디에 있는건가요?
0
80
2
강의 커리큘럼 질문
0
102
1
조건문 else 사용하지 않는 이유
0
77
2
셀레니움으로 접근할 수 없는 경우
0
96
2
웹페이지 변경
0
75
2
자바스크립트로 태그 선택 시 질문입니다.
1
65
2
수료증은 어떻게 받나요?
0
122
2
class명을 활용하여 선택자를 만들지 않는 경우..?
0
61
2
드라이버가 안 열려요
0
79
2
이거 해결방법 아시는 분?
0
121
2
네이버 지식인 크롤링..
0
202
2





