0
답변 2 네이버지도 웹크롤링중 페이지이동에 대해서 질문드립니다 답변 2 (/p/python)
from selenium import webdriver from bs4 import BeautifulSoup #ChromeDriver로 접속 driver = webdriver.Chrome('C:\wd\chromedriver.exe') driver.impli..

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페이지의 식당이름이 정상적으로 출력될까요?

#파이썬 #크롤링 #셀레니움
+
연숭o 님께서 19일 전에 Python에 올린 질문

네이버지도 웹크롤링중 페이지이동에 대해서 질문드립니다

0
답변 2 네이버지도 웹크롤링중 페이지이동에 대해서 질문드립니다 답변 2 (/p/python)
from selenium import webdriver from bs4 import BeautifulSoup #ChromeDriver로 접속 driver = webdriver.Chrome('C:\wd\chromedriver.exe') driver.impli..

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페이지의 식당이름이 정상적으로 출력될까요?

#파이썬 #크롤링 #셀레니움
+
연숭o 님께서 19일 전에 Python에 올린 질문

2개의 답변

1
[답변]네이버지도 웹크롤링중 페이지이동에 대해서 질문드립니다 2 (/p/)
2번 페이지로 이동하기 전에 아래와 같이 임의의 딜레이를 넣어 보시기 바랍니다. driver.implicitly_wait(3)  

2번 페이지로 이동하기 전에 아래와 같이 임의의 딜레이를 넣어 보시기 바랍니다.

driver.implicitly_wait(3)

 

사탕 주기
+
kimho 님께서 18일 전에 에 올린 글
0
 
연숭o 13일 전
페이지 이동전에 해봤는데도 되질않네요 ..ㅠㅠ
0
 
인레일 3일 전
감사합니다
0
[답변]네이버지도 웹크롤링중 페이지이동에 대해서 질문드립니다 (/p/python)
딜레이를 주고 클릭해도 같은 현상이 나타난다면 실제로 클릭 가능한 상태에서 클릭이 되도록 처리할 필요가 있을 것 같습니다. 아래 코드를 참고해보시면 어..

딜레이를 주고 클릭해도 같은 현상이 나타난다면

실제로 클릭 가능한 상태에서 클릭이 되도록 처리할 필요가 있을 것 같습니다.

아래 코드를 참고해보시면 어떠실지요?

from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

element = WebDriverWait(driver, 10).until(
    EC.element_to_be_clickable((By.XPATH, '//a[@class="clickable-link-cssname"]'))
)
element.click()

추가적으로, 정의하신 경로("""//*[@id="panel"]/div[2]/div[1]/div[2]/div[2]/div/div/a[1]""")의 문법이 맞는지도 확인이 필요할 것 같습니다.

사탕 주기
+
kimho 님께서 12일 전에 Python에 올린 글
조회수 260
답글 2
URL