작성
·
1.4K
1
계속 고민하다가 답을 못찾아서 문의드립니다.
우선 접근한 url은 iframe으로 올라오는 url에 대해 직접 접근하였습니다.
문제는 스크롤 다운이 안되네요. 다른 예제들로는 잘 내려갔었는데..
의심되는 원인으로는
아래 id값을 통해 창이 제대로 클릭되지 않는 케이스입니다.
browser.find_element(By.CSS_SELECTOR, "#_pcmap_list_scroll_container").click()
스크롤 다운이 제대로 되지 않는 경우
browser.execute_script("window.scrollTo(0, document.documentElement.scrollHeight)") #이부분
1번일 가능성을 높게보는데, 이것저것 해봤는데 정답을 못찾았네요. 혹시 원인 유추 가능할까요?
전체 소스코드는 아래와 같습니다.
감사합니다.
from openpyxl import Workbook
import requests
from bs4 import BeautifulSoup
from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from webdriver_manager.chrome import ChromeDriverManager
from selenium.webdriver.common.by import By
from selenium.webdriver.chrome.options import Options
import time
# 브라우저 꺼짐 방지
chrome_options = Options()
chrome_options.add_experimental_option("detach", True)
url = "https://pcmap.place.naver.com/restaurant/list?query=성수동+파스타"
service = Service(executable_path=ChromeDriverManager().install())
browser = webdriver.Chrome(service=service, options=chrome_options)
browser.implicitly_wait(10)
browser.maximize_window()
browser.get(url)
browser.find_element(By.CSS_SELECTOR, "#_pcmap_list_scroll_container").click() #이부분
before_h = browser.execute_script("return document.documentElement.scrollHeight")
print(before_h)
for i in range(0,10):
browser.execute_script("window.scrollTo(0, document.documentElement.scrollHeight)") #이부분
time.sleep(1)
after_h = browser.execute_script("return document.documentElement.scrollHeight")
print(after_h)
if after_h == before_h:
break
before_h = after_h
restaurant_names = browser.find_elements(By.CSS_SELECTOR, ".place_bluelink.TYaxT")
for restaurant_name in restaurant_names:
print(restaurant_name.text)