작성
·
1.5K
0
from selenium.webdriver.common.keys import Keys
from selenium import webdriver
import time
import openpyxl
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By
wb = openpyxl.Workbook()
ws = wb.create_sheet("1페이지")
ws.append(["순위","이름","방영일","프로그램"])
browser.get("https://pcmap.place.naver.com/restaurant/list?query=%EB%A7%9B%EC%9E%88%EB%8A%94%EB%85%80%EC%84%9D%EB%93%A4%20%EB%A7%9B%EC%A7%91&x=127.510209&y=36.5851932&bounds=125.8897257%3B35.304463%3B131.3279581%3B37.8016307&isCurrentLocationSearch=true&tvProgram=false&x=128.4255012&y=36.254532&ts=1644222834366&mapUrl=https%3A%2F%2Fmap.naver.com%2Fv5%2Fsearch%2F%25EB%25A7%259B%25EC%259E%2588%25EB%258A%2594%25EB%2585%2580%25EC%2584%259D%25EB%2593%25A4%2520%25EB%25A7%259B%25EC%25A7%2591%3Fc%3D14194371.5368239%2C4381444.7119141%2C7%2C0%2C0%2C0%2Cdh#")
browser.implicitly_wait(10)
wait = WebDriverWait(browser, 10) #
element = wait.until(EC.element_to_be_clickable((By.XPATH, "//*[@id='_pcmap_list_scroll_container']")))
element.click()
#로딩된 데이터 개수 확인
lis = browser.find_elements_by_css_selector("li._1EKsQ._12tNp")
before_len = len(lis)
while True:
#맨 아래로 스크롤 내린다
browser.find_element_by_css_selector("body").send_keys(Keys.END)
#스크롤 사이 페이지 로딩 시간
time.sleep(2)
#스크롤 후 로딩된 데이터 개수 확인
lis = browser.find_elements_by_css_selector("li._1EKsQ._12tNp")
after_len = len(lis)
#로딩된 데이터 개수가 같다면 반복 멈춤
if before_len == after_len:
break
before_len = after_len
# 데이터 기다리는 시간을 0으로 만들어 줘요. (데이터가 없더라도 빠르게 넘어감)
browser.implicitly_wait(0)
rank = 1
for li in lis:
#광고 상품 아닌 것만
if len(li.find_elements_by_css_selector("svg._2ulu3")) == 0:
#별점이 있는 가게만 크롤링
if len(li.find_elements_by_css_selector("span._2FqTn._1mRAM>em")) > 0:
#가게명
name = li.find_element_by_css_selector("span.OXiLu").text
# 프로그램
program = li.find_element_by_css_selector("div._1fp5H._1tGBC > div").text
#방영일
star = li.find_element_by_css_selector("div._3hn9q > div > a").text
print(rank, name, star, program)
ws.append([rank, name, star, program])
rank = rank + 1
wb.save("1페이지.xlsx")
답변 1
0
안녕하세요!
음... 일단 질문 내용만 봐서는 정확히 무엇을 하고 싶은지 이해가 잘 안됩니다.
지도에 노란색으로 표시된 주소를 가지고 오고 싶다는 말씀 인가요?
그러면 첫번째 방법으로, 클릭한다음 가져오게 만들면 좋을 것 같습니다.