Selenium/ChromeDriver Webscraping 超时异常
Selenium/ChromeDriver Timeout Exception when Webscraping
我构建了一个抓取 url 的网络抓取工具。它偶尔会出现问题(不会一直发生)。我在代码的这个特定部分得到了 TimeOutException
:
tries = 0
while tries<1000:
try:
domain=wait.until(EC.presence_of_element_located((By.CSS_SELECTOR, "cite._Rm")))
domain = domain.text
break
except StaleElementReferenceException:
tries+=1
self.browser.refresh()
错误:
File "", line 389, in findDomains
domain=wait.until(EC.presence_of_element_located((By.CSS_SELECTOR, "cite._Rm"))) File "", line 78, in until
raise TimeoutException(message, screen, stacktrace) TimeoutException: Message:
因为你已经将它包裹在一个 while 块中多次尝试,只需处理 TimeoutException
:
try:
domain=wait.until(EC.presence_of_element_located((By.CSS_SELECTOR, "cite._Rm")))
domain = domain.text
break
except (StaleElementReferenceException, TimeoutException):
tries+=1
self.browser.refresh()
请注意,如果无法重现问题,或者至少 link 到您描述的偶尔出现问题的目标网页,就很难说更多。
您收到超时异常,因为在超时期间未找到元素,请尝试增加它或像下面的代码一样刷新页面
tries = 0
while tries<1000:
try:
domain=WebdriverWait(self.browser, timeout=10).until(
EC.presence_of_element_located((By.CSS_SELECTOR, "cite._Rm"))
)
domain_text = domain.text
break
except TimeoutException:
tries+=1
self.browser.refresh()
我构建了一个抓取 url 的网络抓取工具。它偶尔会出现问题(不会一直发生)。我在代码的这个特定部分得到了 TimeOutException
:
tries = 0
while tries<1000:
try:
domain=wait.until(EC.presence_of_element_located((By.CSS_SELECTOR, "cite._Rm")))
domain = domain.text
break
except StaleElementReferenceException:
tries+=1
self.browser.refresh()
错误:
File "", line 389, in findDomains domain=wait.until(EC.presence_of_element_located((By.CSS_SELECTOR, "cite._Rm"))) File "", line 78, in until raise TimeoutException(message, screen, stacktrace) TimeoutException: Message:
因为你已经将它包裹在一个 while 块中多次尝试,只需处理 TimeoutException
:
try:
domain=wait.until(EC.presence_of_element_located((By.CSS_SELECTOR, "cite._Rm")))
domain = domain.text
break
except (StaleElementReferenceException, TimeoutException):
tries+=1
self.browser.refresh()
请注意,如果无法重现问题,或者至少 link 到您描述的偶尔出现问题的目标网页,就很难说更多。
您收到超时异常,因为在超时期间未找到元素,请尝试增加它或像下面的代码一样刷新页面
tries = 0
while tries<1000:
try:
domain=WebdriverWait(self.browser, timeout=10).until(
EC.presence_of_element_located((By.CSS_SELECTOR, "cite._Rm"))
)
domain_text = domain.text
break
except TimeoutException:
tries+=1
self.browser.refresh()