python - 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()
解决方案
有时你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())
推荐阅读
- ruby-on-rails - Rails 按受欢迎程度排序
- javascript - 制作我的第一个不和谐机器人,除了基本命令之外无法添加任何内容
- vb.net - File.OpenRead 太慢了
- ansible - 如何使用ansible清空目录
- materialize - Materialise Chips Limit 选项不起作用
- python - 如何使用 apply 或 map 将 Python for 循环编写为 lambda 函数?
- r - 如何让 dplyr::summarize_all 使用数据块在 sparkdataframe 上工作?
- c - 如何克服windows停止工作的错误信息?
- c++11 - Gtest 和 gmock 在下面的代码片段虽然错误
- ruby - 我们可以在 ruby 2.7.0 中安装 C gems