import lxml
from lxml import html
import requests
import numpy as np
import pandas as pd
symbol = 'AAPL'
url = 'https://finance.yahoo.com/quote/' + symbol + '/balance-sheet?p=' + symbol
page = requests.get(url)
tree = html.fromstring(page.content)
tableHeaders = tree.xpath('//*[@class="D(tbhg)"]//span')
Headers = []
for Header in tableHeaders:
Headers.append(Header.text)
df = pd.DataFrame()
df = pd.DataFrame(columns=Headers,index=[1])
Xpath1 = "//span[contains(.,'"+item1+"')]/parent::div/parent::div/following-sibling::div"
item1 = 'Long Term Debt'
row1 = []
row1.append(item1)
rowvalues1 = tree.xpath(Xpath1)
for value1 in rowvalues1:
row1.append(value1.text)
Xpath1 = Xpath1+"/span"
Childvalues1 = tree.xpath(Xpath1)
j=0
for i in range(len(row1)):
if(row1[i]==None):
row1[i] =Childvalues1[j].text
j=j+1
df.loc[1] = row1
df=df.fillna(0)
df[df=='-'] ='0'
long_term_debt=float(str(df.iloc[0,4]).replace(',',''))
Когда я запускаю символ AAPL, я получаю сообщение об ошибке:
---------------------------------------------------------------------------
IndexError Traceback (most recent call last)
<ipython-input-63-fe5e79eabd51> in <module>
57 df[df=='-'] ='0'
58
---> 59 long_term_debt=float(str(df.iloc[0,4]).replace(',',''))
60
--
2007 l = len(ax)
2008 if key >= l or key < -l:
-> 2009 raise IndexError("single positional indexer is out-of-bounds")
2010
2011 def _getitem_tuple(self, tup):
IndexError: одиночный позиционный индексатор выходит за пределы
Я не могу запустить значение, извлеченное изdf
как и в случае с AAPL, для компании нет 2015 года. Финансы Yahoo закрыли этот год для этой компании, однако для других компаний наступил 2015 год.
Что я могу сделать, чтобы устранить такую ошибку для этого конкретного года и символа. Я попытался использовать «None» в функции для долгосрочной переменной, однако это не работает. Есть идеи, как подойти к этому делу?
Формула, которую пытались использовать:
def debt():
if df.iloc[0,4]== None : return 0
else: float(str(df.iloc[0,4]).replace(',',''))
Однако она не работает