openpyxl - 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()
解决方案
推荐阅读
- python - 从类实例动态继承并将类型更改为新创建的类
- python - 如何使用 Turtle 绘制虚线螺旋计
- date - FormatDate() 给出正确的日期 -1 天
- c++ - 如何通过 cmake 构建 qnx 应用程序
- javascript - 输入滑块更改时更改图像 SRC
- ubuntu - 如何在 ubuntu 中创建和使用主机文件?
- c# - IdentityServer4 - 如何为具有相同客户端的每个用户自定义刷新令牌生命周期?
- php - 网址重写规则错误:在此服务器上找不到请求的网址
- python - ValueError:形状不匹配:无法将对象广播到单个 shape-python
- substrate - 关于 orml_vesting 托盘 genesis_build 的一些问题