python - 为什么我收到 IndexError: list index out of range 消息?
问题描述
import urllib # cmd- pip install requests
import bs4 # 실행전cmd- pip install BeautifulSoup4 설치
import matplotlib.pyplot # 만들어진 데이터 포인트를 graph로 출력, 사용하기전 cmd-pip install matplotlib 실행
from datetime import datetime
company=input('찾으시고 싶은 회사명을 Ticker는 stock symbol로 적어주세요(ex)apple=appl) :' )
def get_company_data(company):
findothercompany=company # https://www.nasdaq.com/symbol/aapl/dividend-history 창에서 appl부분을 인풋값으로 변환
data=[] # 공백 리스트 형식으로 append 함수를 이용해 추가할 예정
dividendplot=[] # 공백 리스트에 데이터값을 받아와서 plot함수를 이용해 graph를 그린다.
url='https://www.nasdaq.com/symbol/'+findothercompany+'/dividend-history' # nasdaq사이트에서 dividend history를 찾는것 없을수도 있다.
print('본 데이터는 NASDAQ의 '+url+'를 참고한 것입니다.')
tables=bs4.BeautifulSoup(urllib.request.urlopen(url).read(),features='lxml').find_all('table')# lxml은 코드들을 html 형식으로 가져오는것 (1조 발표 html형식)
#print(len(tables))
dividend_data=tables[2].find_all('tr')
#print(dividend_data[0])
#print(dividend_data[1])
for tr in dividend_data[1:]:
tds=tr.find_all('td')
exdate=tds[0].text
Type=tds[1].text
CashAmount=tds[2].text
Declarationdate=tds[3].text
Recorddate=tds[4].text
Paymentdate=tds[5].text
data.append([exdate,Type,CashAmount,Declarationdate,Recorddate,Paymentdate])
dividendplot.append([Paymentdate,float(CashAmount)])
return data,dividendplot
dividenddata,dividendplot=get_company_data(company)
print(dividenddata)
然后我收到了这条消息:
Traceback (most recent call last):
File "C:/Users/월토커/Desktop/금융소프트웨어 project.py", line 32, in <module>
dividenddata,dividendplot=get_company_data(company)
File "C:/Users/월토커/Desktop/금융소프트웨어 project.py", line 22, in get_company_data
Declarationdate=tds[3].text
IndexError: list index out of range
解决方案
您的代码很好,但appl
没有数据,请检查https://www.nasdaq.com/symbol/appl/dividend-history尝试使用另一个类似ppl
检查你的td
长度,如果它的长度低于 6 跳过循环
tds=tr.find_all('td')
if len(tds) < 6:
continue # or break
推荐阅读
- coq - 在 Coq 中使用 Program 定义时,Obligations 中缺少信息的问题
- python - 熊猫有没有办法根据一列中的数量对数据框中的行进行分组?
- parsing - 从 github 运行脚本
- ios - React Native - 具有原生组件依赖的自定义原生组件模块
- java - 在 Java 中流式传输可选嵌套列表的最有效方法是什么?
- java - Spring Boot 计数并保存在 Json 中
- python - aws cli 可以列出,但 boto3 不能
- c# - 如何模拟测试这个 ViewModel ,因为它的 null 总是抛出异常
- sql - 尝试在 SQL Server 中查找部分匹配的字符串
- python - AWS Glue 不接受额外的 python 库