네이버지도 웹크롤링중 페이지이동에 대해서 질문드립니다
from selenium import webdriver
from bs4 import BeautifulSoup
#ChromeDriver로 접속
driver = webdriver.Chrome('C:\wd\chromedriver.exe')
driver.implicitly_wait(3)
#웹페이지 불러오기
driver.get('https://map.naver.com/')
#검색창에 서울 맛 친 후 검색버튼 클릭
search = driver.find_element_by_id('search-input')
search.send_keys('서울 맛집')
driver.find_element_by_xpath("""//*[@id="header"]/div[1]/fieldset/button""").click()
html = driver.page_source
soup = BeautifulSoup(html, 'html.parser')
#1페이지 식당이름 크롤링
rname = soup.select('#panel > div.panel_content.nano.has-scrollbar > div.scroll_pane.content > div.panel_content_flexible > div.search_result > ul > li > div.lsnx > dl > dt > a')
category = soup.select('#panel > div.panel_content.nano.has-scrollbar > div.scroll_pane.content > div.panel_content_flexible > div.search_result > ul > li > div.lsnx > dl > dd.cate') #scategoty = soup.select('#panel > div.panel_content.nano.has-scrollbar > div.scroll_pane.content > div.panel_content_flexible > div.search_result > ul > li > div.lsnx > dl > dd.cate')
#출력
for n in rname:
print(n.text.strip())
#2번페이지 이동
driver.find_element_by_xpath("""//*[@id="panel"]/div[2]/div[1]/div[2]/div[2]/div/div/a[1]""").click()
rname = soup.select('#panel > div.panel_content.nano.has-scrollbar > div.scroll_pane.content > div.panel_content_flexible > div.search_result > ul > li > div.lsnx > dl > dt > a')
for n in rname:
print(n.text.strip())
이렇게 되어있습니다.
실행을 하면 1페이지는 식당이름이 정상적으로 출력이되지만
2번페이지 이동의 driver.find_element_by_xpath()후에 출력이 1페이지와 동일하게 출력이 됩니다.
어떻게 하면 2페이지의 식당이름이 정상적으로 출력될까요?
2번 페이지로 이동하기 전에 아래와 같이 임의의 딜레이를 넣어 보시기 바랍니다.
딜레이를 주고 클릭해도 같은 현상이 나타난다면
실제로 클릭 가능한 상태에서 클릭이 되도록 처리할 필요가 있을 것 같습니다.
아래 코드를 참고해보시면 어떠실지요?
추가적으로, 정의하신 경로("""//*[@id="panel"]/div[2]/div[1]/div[2]/div[2]/div/div/a[1]""")의 문법이 맞는지도 확인이 필요할 것 같습니다.