Selenium Webdriver超时(Python 2.7)

Selenium Webdriver超时(Python 2.7),python,selenium,debugging,selenium-webdriver,firebug,Python,Selenium,Debugging,Selenium Webdriver,Firebug,当从纳斯达克(NASDAQ)刮取数据时,像ACHC这样的股票代码有空页 我的程序遍历所有的股票代码符号,当我到达这个符号时,它会超时,因为没有数据可掌握。我试图找出一种方法来检查是否没有,如果没有,跳过股票代码,但继续循环。代码相当长,因此我将发布最相关的部分:打开页面的循环的开始: ## navigate to income statement annualy page url = url_form.format(symbol, "income-statement") browser.

当从纳斯达克(NASDAQ)刮取数据时,像ACHC这样的股票代码有空页

我的程序遍历所有的股票代码符号,当我到达这个符号时,它会超时,因为没有数据可掌握。我试图找出一种方法来检查是否没有,如果没有,跳过股票代码,但继续循环。代码相当长,因此我将发布最相关的部分:打开页面的循环的开始:

## 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)

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
与循环的预期效果一样,这将保持循环正常运行而不会崩溃。

您可以使用
请求
urllib
等库来刮取该网页,并检查是否有您需要的内容。这些库比Selenium快得多,因为它们只获取页面的源代码。如果您正在查找特定的标记或结构,如表等,则应查看
beautifulsoup
,您可以将其用于
请求
,以识别页面的特定部分