Python 为什么我收到索引器错误:列表索引超出范围消息?

Python 为什么我收到索引器错误:列表索引超出范围消息?,python,beautifulsoup,web-crawler,Python,Beautifulsoup,Web Crawler,然后我得到了这个信息: 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('찾으시고 싶은 회사명

然后我得到了这个信息:

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)
回溯(最近一次呼叫最后一次):
文件“C:/Users/월토커/桌面/금융소프트웨어 project.py”,第32行,在
dividenddata,dividendplot=获取公司数据(公司)
文件“C:/Users/월토커/桌面/금융소프트웨어 project.py”,第22行,在get_company_数据中
Declarationdate=tds[3]。文本
索引器:列表索引超出范围

您的代码很好,但
appl
没有数据,请使用另一个类似的
ppl

检查
td
长度,如果长度小于6,则跳过循环

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
tds=tr.find_all('td'))
如果len(tds)<6:
继续还是中断

我认为您应该通过打印
tds
数组的内容开始调试代码,看看它是什么样子的。很可能它只有不到3个元素…显然有一个
tr
有3个
tds
。问题是当我键入appl时。但当我输入dal时,它就起作用了
tds=tr.find_all('td')
if len(tds) < 6:
    continue # or break