Python 3.4:尝试和排除后继续运行

Python 3.4 : continue function after try and except

问题

我目前正在从雅虎财经中提取数据。使用 try 和 except 时,函数会在达到错误后停止。如何在 except 语句之后继续函数以提取索引中股票的剩余数据?

index = sp500


def yhooKeyStats():

try:

    for eachStock in index:
        isUrl = 'http://finance.yahoo.com/q/is?s='+eachStock+'+Income+Statement&annual'
        bsUrl = 'http://finance.yahoo.com/q/bs?s='+eachStock+'+Balance+Sheet&annual'
        cfUrl = 'http://finance.yahoo.com/q/cf?s='+eachStock+'+Cash+Flow&annual'


        def bsYhooStats(url):
            req = urllib.request.Request(url)
            resp = urllib.request.urlopen(req)
            respData = resp.read()
            dRespData = respData.decode('utf-8')

            gw = dRespData.split('Goodwill</td><td align="right">')[1].split('&nbsp;&nbsp')[0]

            if len(gw) < 14:
                gw = gw
            else:
                gw = '-'

            return gw

        print(eachStock, bsYhooStats(bsUrl))

except IndexError:
    pass

yhooKeyStats()

输出

嗯 7,050,000 ABT 10,067,000 ABBV 5,862,000 乙腈 2,395,894 王牌 - 首都领地 24,521,500 日均税 3,738,000 1,458,000 埃塞俄比亚 澳大利亚先令 10,613,200 澳式橄榄球联盟-

只需将 try/except 放在 循环中。几种可能性之一:

for eachStock in index:
    ...
    try:
        def bsYhooStats(url):
            ...
            return gw if len(gw) < 14 else '-'
        print(eachStock, bsYhooStats(bsUrl))
    except IndexError:
        pass