Selenium Webdriver 超时(Python 2.7)

Selenium Webdriver Timeout (Python 2.7)

当从纳斯达克抓取数据时,有像 ACHC 这样的代码有空页。 ACHC Empty Field

我的程序遍历了所有的股票代码,当我到达这个代码时它超时了,因为没有要掌握的数据。我正在尝试找出一种方法来检查是否没有任何内容,如果是则跳过自动收报机,但继续循环。代码很长,所以我将 post 最相关的部分:打开页面的循环开头:

## navigate to income statement annualy page    
url = url_form.format(symbol, "income-statement")
browser.get(url)

company_xpath = "//h1[contains(text(), 'Company Financials')]"
company = WebDriverWait(browser, 10).until(EC.presence_of_element_located((By.XPATH, company_xpath))).text

annuals_xpath = "//thead/tr[th[1][text() = 'Period Ending:']]/th[position()>=3]"
annuals = get_elements(browser,annuals_xpath)

Here is a pic of the error message

Selenium 没有用于确定元素是否存在的内置方法,因此最常见的做法是使用 try/except 块。

from selenium.common.exceptions import TimeoutException
...
try:
    company = WebDriverWait(browser, 10).until(EC.presence_of_element_located((By.XPATH, company_xpath))).text
except TimeoutException:
   continue

假设 continue 按预期与您的循环一起工作,这应该使循环继续而不会崩溃。

您可以使用 requestsurllib 之类的库来抓取该网页并检查是否有您需要的内容。这些库比 Selenium 快得多,因为它们只获取页面的源代码。如果您正在寻找特定的标签或结构,如表格等,您应该查看 beautifulsoup,您可以将其与 requests 一起使用来识别页面的非常具体的部分。