Selenium Webdriver超时(Python2.7)

2024-04-20 05:57:55 发布

您现在位置:Python中文网/ 问答频道 /正文

当从纳斯达克采集数据时,像ACHC这样的股票商有空页面。ACHC Empty Field

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

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


Tags: of数据textbrowserurlget页面xpath
2条回答

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

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与您的循环一起工作,这样就可以保持循环正常运行而不会崩溃。在

相关问题 更多 >