Python 如何忽略TimeoutException并继续运行代码?

Python 如何忽略TimeoutException并继续运行代码?,python,selenium,Python,Selenium,我通过放置关键字(来自디지털가전.xlsx)下载到网站()。问题是,如果该关键字无法在此网站中进行分析,并且没有显示任何需求/供应/竞争力的数据,则由于timeoutexception,它将停止运行。我希望它继续运行,即使它没有显示任何数据。我如何解决这个问题 raise TimeoutException(message, screen, stacktrace) selenium.common.exceptions.TimeoutException: Message: 这是存储关键字的文件

我通过放置关键字(来自디지털가전.xlsx)下载到网站()。问题是,如果该关键字无法在此网站中进行分析,并且没有显示任何需求/供应/竞争力的数据,则由于timeoutexception,它将停止运行。我希望它继续运行,即使它没有显示任何数据。我如何解决这个问题

raise TimeoutException(message, screen, stacktrace)
selenium.common.exceptions.TimeoutException: Message: 
这是存储关键字的文件 excel文件的最后一列包含关键字

import xlrd
import pandas as pd
import xlrd
import pandas as pd
import numpy as np
from bs4 import BeautifulSoup
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
import openpyxl
import time
from selenium.webdriver.support.ui import WebDriverWait
from selenium.common.exceptions import NoSuchElementException
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By
from selenium.common.exceptions import TimeoutException


driver = webdriver.Chrome(executable_path=r"C:\Users\Kim woo jae\PycharmProjects\100개 키워드\chromedriver.exe")
list = []
list1 = []
list2 = []
list3 = []

driver.get("https://itemscout.io/keyword/")
wait = WebDriverWait(driver, 120)
b = wait.until(EC.visibility_of_element_located((By.XPATH, '//*[@id="container"]/div/div[2]/div/input')))
b.clear()
b.send_keys('화장대')
c = wait.until(EC.visibility_of_element_located((By.XPATH, '//*[@id="container"]/div/div[2]/div/span')))
c.click()
d = wait.until(EC.visibility_of_element_located((By.XPATH, '//*[@id="container"]/div/div[3]/div[2]/div[1]/div[1]/div[2]/div[2]/div/table/tbody'))).text

df = pd.read_excel(r'디지털가전.xlsx')
ky = df['키워드']

for k in ky:
    b1 = wait.until(EC.visibility_of_element_located((By.XPATH, '//*[@id="container"]/div/div[2]/div/input')))
    b1.clear()
    b1.send_keys(k)
    # c1 = wait.until(EC.visibility_of_element_located((By.XPATH, '//*[@id="container"]/div/div[2]/div/span')))
    wait.until(EC.element_to_be_clickable((By.XPATH, '//*[@id="container"]/div/div[2]/div/span'))).click()
    # c1.click()
    time.sleep(2)
    wait.until(EC.presence_of_element_located((By.XPATH, '//*[@id="container"]/div[1]/div[3]/div[2]/div[1]/div[1]/div[2]/div[2]/div/table/tbody/tr/td[2]/div')))

    d1 = wait.until(EC.visibility_of_element_located((By.XPATH, '//*[@id="container"]/div/div[3]/div[2]/div[1]/div[1]/div[2]/div[2]/div/table/tbody'))).text
    d1 = (d1).replace(',', '.')
    d1 = ' '.join(d1.splitlines())
    d1 = d1.replace(' ', ',')
    result = [x.strip() for x in d1.split(',')]

    d = [result[0]]
    s = [result[1]]
    c = [result[2]]
    print([k],d,s,c)

    for ks in [k]:
        list.append(ks)
    for ds in d:
        list1.append(ds)
    for ss in s:
        list2.append(ss)
    for cs in c:
        list3.append(cs)

df["키워드 확인"] = list
df["총검색량"] = list1
df["공급량"] = list2
df["경쟁률"] = list3


df.to_excel("디지털가전 최종.xlsx")

您可以在try\中结束呼叫,但以下情况除外:

for k in ky:
   try:
        b1 = wait.until(EC.visibility_of_element_located((By.XPATH, '//*[@id="container"]/div/div[2]/div/input')))
        b1.clear()
        b1.send_keys(k)
        # c1 = wait.until(EC.visibility_of_element_located((By.XPATH, '//*[@id="container"]/div/div[2]/div/span')))
        wait.until(EC.element_to_be_clickable((By.XPATH, '//*[@id="container"]/div/div[2]/div/span'))).click()
        # c1.click()
        time.sleep(10)
        wait.until(EC.presence_of_element_located((By.XPATH, '//*[@id="container"]/div[1]/div[3]/div[2]/div[1]/div[1]/div[2]/div[2]/div/table/tbody/tr/td[2]/div')))

        d1 = wait.until(EC.visibility_of_element_located((By.XPATH, '//*[@id="container"]/div/div[3]/div[2]/div[1]/div[1]/div[2]/div[2]/div/table/tbody'))).text
        d1 = (d1).replace(',', '.')
        d1 = ' '.join(d1.splitlines())
        d1 = d1.replace(' ', ',')
        result = [x.strip() for x in d1.split(',')]

        d = [result[0]]
        s = [result[1]]
        c = [result[2]]
        print([k],d,s,c)

        for ks in [k]:
            list.append(ks)
        for ds in d:
            list1.append(ds)
        for ss in s:
            list2.append(ss)
        for cs in c:
            list3.append(cs)
        driver.execute_script("window.history.go(-1)")  # back to search
        driver.refresh() # extra safety
   except TimeoutException:
      print("Got Timeout for Key:", k)

Exception TimeoutException应该放在哪里:?wait.until(EC.presence_of_element_located((By.XPATH,/*[@id=“container”]/div[1]/div[2]/div[1]/div[1]/div[2]/div[2]/div/table/tbody/tr/td[2]/div'))如果没有出现,我想继续运行循环。我可以再问你一个问题吗,先生?某个关键字的需求/供应/竞争力数据有时会打印为与前一个关键字相同的数据,是否有其他方法可以更正?我应该增加睡眠时间吗?你是说结果是错误的吗?或者您只想删除\跳过重复数据?例如,如果关键字A的结果为1000/1000/1000,则关键字B的结果为1000/1000/1000,而关键字C的结果为1000/1000/1000,但应不同