selenium으로 부킹닷컴 크롤링하기

ganadara·2023년 2월 21일
1

project

목록 보기
5/9
# import
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
import time

# 크롬 웹 드라이버의 경로를 설정
driver = webdriver.Chrome('./chromedriver')

# 접속할 url
url = "https://www.booking.com/index.ko.html?aid=7967412&label=63f31064bbc5c9510eb36b19&sid=60f4e8f46cd5dff7e3094070496ce3f0&srpvid=c6a83a805bfc0026&click_from_logo=1"

# 접속 시도
driver.get(url)

# 기다리기
time.sleep(0.5) ## 0.5초

#검색
for i in aa:
    search_box = driver.find_element(By.CSS_SELECTOR, "#ss")
    search_box.send_keys(i)
    search_box.send_keys(Keys.RETURN)
    search_box1 = driver.find_element(By.CSS_SELECTOR, "#\:Rp5\:")
    search_box1.send_keys(Keys.RETURN)


    
     #호텔명 txt변환
    hotel = driver.find_element(By.CSS_SELECTOR,"#search_results_table > div:nth-child(2) > div > div > div.d4924c9e74 > div.a826ba81c4.fe821aea6c.fa2f36ad22.afd256fc79.d08f526e0d.ed11e24d01.ef9845d4b3.da89aeb942.c12ee2f811 > div.d20f4628d0 > div.b978843432 > div > div > div > div.b1e6dd8416.aacd9d0b0a > div > div:nth-child(1) > div > h3 > a > div.fcab3ed991.a23c043802") 
    hhh = hotel.text
    hh = hhh.replace(" ", "")
    print(hh)
    
    #리스트와 호텔명 일치확인 if문
    if hh in i:
        #호텔명 클릭
        sample = driver.find_element(By.CSS_SELECTOR,"#search_results_table > div:nth-child(2) > div > div > div.d4924c9e74 > div.a826ba81c4.fe821aea6c.fa2f36ad22.afd256fc79.d08f526e0d.ed11e24d01.ef9845d4b3.da89aeb942.c12ee2f811 > div.d20f4628d0 > div.b978843432 > div > div > div > div.b1e6dd8416.aacd9d0b0a > div > div:nth-child(1) > div > h3 > a > div.fcab3ed991.a23c043802")
        sample.click()
        
        # 고객 후기 클릭하기
        #review = driver.find_element(By.CSS_SELECTOR,"#basiclayout > div.hotelchars > div:nth-child(1) > div > div.k2-hp--gallery-header.bui-grid__column.bui-grid__column-9 > div:nth-child(1) > div > div > ul > li:nth-child(5) > a")
        #review = driver.find_element(By.XPATH,"//*[@id="basiclayout"]/div[1]/div[1]/div/div[2]/div[1]/div/div/ul/li[5]/a")
        #review.click()
        review = driver.find_element(By.XPATH,'//*[@id="basiclayout"]/div[1]/div[1]/div/div[2]/div[1]/div/div/ul/li[5]/a')
        review.send_keys(Keys.ENTER)
        
    else:
        pass
    
    #뒤로가기
    driver.back()
  • 오류:Message: no such element: Unable to locate element:
    시도
        # 고객 후기 클릭하기
        #review = driver.find_element(By.CSS_SELECTOR,"#basiclayout > div.hotelchars > div:nth-child(1) > div > div.k2-hp--gallery-header.bui-grid__column.bui-grid__column-9 > div:nth-child(1) > div > div > ul > li:nth-child(5) > a")
        #review = driver.find_element(By.XPATH,"//*[@id="basiclayout"]/div[1]/div[1]/div/div[2]/div[1]/div/div/ul/li[5]/a")
        #review.click()
#         review = driver.find_element(By.CSS_SELECTOR,'#basiclayout > div.hotelchars > div:nth-child(1) > div > div.k2-hp--gallery-header.bui-grid__column.bui-grid__column-9 > div:nth-child(1) > div > div > ul > li:nth-child(5) > a')
#         review.send_keys(Keys.RETURN)
        
#         review = driver.find_element(By.XPATH,'//*[@id="basiclayout"]/div[1]/div[1]/div/div[2]/div[1]/div/div/ul/li[5]/a')
#         driver.execute_script("arguments[0].click();", review)
#         review = driver.swithch_to.frame(driver.find_element(By.XPATH,'//*[@id="basiclayout"]/div[1]/div[1]/div/div[2]/div[1]/div/div/ul/li[5]/a'))
#         review.click()

해결못함

print 생략없이 출력하기

# *앞에 넣어주기
print(*aa)

profile
DL 공부중

1개의 댓글

comment-user-thumbnail
2023년 2월 22일

헉 대다네요~~

답글 달기