首页 > 解决方案 > seleium Max 重试次数超过 url 错误

问题描述

为什么会出现错误?vs 在 webDriverWait 中说错误。我需要帮助。我想查找有关一本书的信息,并将该信息保存到 Excel 文件中。我使用 webDriverWait 等待页面加载,但在那部分出现错误,并且由于 url 错误而超出了 Max retries。

    import openpyxl
    from selenium import webdriver
    from selenium.webdriver.common.keys import Keys
    from openpyxl import Workbook
    from selenium.webdriver.common.by import By
    from selenium.webdriver.support.ui import WebDriverWait
    from selenium.webdriver.support import expected_conditions as EC
    import time
    
    wb = openpyxl.load_workbook('./yes24.xlsx')   #open excel
    ws = wb.active    #워크시트 만들기
    ws.append(['책 제목', '저자', '출판사', '정가'])       # 정보 넣기
    
    options = webdriver.ChromeOptions()   #usb error clear code
    options.add_experimental_option("excludeSwitches", ["enable-logging"])
    driver = webdriver.Chrome(options=options)    #크롬 드라이버 선언
    url = 'https://www.yes24.com'    #url 지정
    driver.get(url)   #url 가져오기
    
    driver.find_element_by_xpath('//*[@id="query"]').send_keys('파이썬')    #파이썬 입력
    driver.find_element_by_xpath('//*[@id="query"]').send_keys(Keys.ENTER)  #검색한 곳으로 이동
    
    page = 3
    for _ in range(3):
        try:
            element = WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.XPATH, '//*[@id="schMid_wrap"]/div[3]/div[2]/table/tbody/tr[39]/td[2]/p[1]/a/strong')))   #페이지 로딩 기다리기 선언
            for i in range(1, 40, 2):
                name = driver.find_element_by_xpath('//*[@id="schMid_wrap"]/div[3]/div[2]/table/tbody/tr[{0}]/td[2]/p[1]/a/strong'.format(i))   #도서 이름
                author = driver.find_element_by_xpath('//*[@id="schMid_wrap"]/div[3]/div[2]/table/tbody/tr[{0}]/td[2]/div[1]/a[1]'.format(i))   #저자
                publisher = driver.find_element_by_xpath('//*[@id="schMid_wrap"]/div[3]/div[2]/table/tbody/tr[{0}]/td[2]/div[1]/a[2]'.format(i))  #출판사
                price = driver.find_element_by_xpath('//*[@id="schMid_wrap"]/div[3]/div[2]/table/tbody/tr[{0}]/td[2]/div[2]/em[1]'.format(i))  #가격
                row = [name.text, author.text, publisher.text, price.text]  #리스트에 담기
                ws.append(row)   #worksheet에 추가
            if page == 11:
                driver.find_element_by_xpath('//* 
  [@id="schMid_wrap"]/div[3]/div[2]/div/a[12]').click()
                page = 3  #10페이지 넘어가면 다음페이지 버튼 누르기
            else:
                driver.find_element_by_xpath('//*[@id="schMid_wrap"]/div[3]/div[2]/div/a[{0}]'.format(page)).click()
                page += 1  #다음 페이지 누르기
        finally:
            driver.quit()
    wb.save('./yes24.xlsx')
    wb.close()

标签: openpyxl

解决方案


推荐阅读