2017-07-19 113 views
0

当从纳斯达克刮取数据时,有像ACHC这样的具有空页面的代码。 ACHC Empty FieldSelenium Webdriver Timeout(Python 2.7)

我的程序遍历所有的股票代码,当我到达这个股票时,它会超时,因为没有数据需要掌握。我试图找出一种方法来检查是否没有任何内容,如果是这样,跳过这个代码,但继续循环。该代码是很长,所以生病后最相关的部分:循环开始时它打开的页面:

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

回答

0

硒不具有一个内置的方法来确定是否元素是否存在,所以最常见的做法是使用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按预期工作与你的循环。

+0

美丽!!!!!! – PurexedPose

0

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