首页 > 解决方案 > Python中的IndexError - 列表索引超出范围

问题描述

我有这段代码,但我得到了 IndexError: list index out of range。我真的不明白为什么。for 循环应该遍历所有 td,从第二个 [1] td 开始。那么为什么索引超出范围?

import bs4 as bs
import pickle
import requests
import lxml

def save_OMX30_tickers():
   resp = requests.get('https://www.avanza.se/aktier/lista.html')
   soup = bs.BeautifulSoup(resp.text, 'lxml')
   table = soup.find('table', {'class': 'u-standardTable'})
   tickers = []
   for row in table.findAll('tr')[0:]:
       ticker = row.findAll('td')[1].text
       tickers.append(ticker)

   with open('OMX30tickers.pickle', 'wb') as f:
       pickle.dump(tickers, f)

   print(tickers)

   return tickers

save_OMX30_tickers()

标签: pythonpython-3.x

解决方案


有时你row.findAll('td')是空的,试试这个会有所帮助,我也建议你添加rsplit()以删除所有\n

for row in table.findAll('tr')[0:]:
    if not row.findAll('td'):                                                                                                                                                 
        continue
    ticker = row.findAll('td')[1].text
    tickers.append(ticker.rsplit())

推荐阅读