2016-08-18 12 views
0

私は以下のコードを使用してYahoo Financeからデータを取得しようとしていますが、エラーが表示されます。Pythonを使用して損益計算書データを引き出す

私は端からデバッグしようとしましたが、それは

タイトル= soup.find(テキスト=パターン、「強い」)空白

を#returning findコマンドを使用するときにタイトルが空白として来ているに見えますコード:

# -*- coding: utf-8 -*- 
""" 

""" 
#Read income statement to calculate ratios 

from bs4 import BeautifulSoup 
import requests 
import re,sys 

myurl = "https://finance.yahoo.com/q/is?s=AAPL&annual" 
html = requests.get(myurl).content 
soup = BeautifulSoup(html) 

def periodic_figure_values(soup, yahoo_figure): 

    values = [] 
    pattern = re.compile(yahoo_figure) 

    title = soup.find("strong", text=pattern) # works for the figures printed in bold 
    if title: 
     row = title.parent.parent 
    else: 
     title = soup.find("td", text=pattern) # works for any other available figure 
     if title: 
      row = title.parent 
     else: 
      sys.exit("Invalid figure '" + yahoo_figure + "' passed.") 

    cells = row.find_all("td")[1:] # exclude the <td> with figure name 
    for cell in cells: 
     if cell.text.strip() != yahoo_figure: # needed because some figures are indented 
      str_value = cell.text.strip().replace(",", "").replace("(", "-").replace(")", "") 
      if str_value == "-": 
       str_value = 0 
      value = int(str_value) * 1000 
      values.append(value) 

    return values 


def financials_soup(ticker_symbol, statement="is", quarterly=False): 

    if statement == "is" or statement == "bs" or statement == "cf": 
     url = "https://finance.yahoo.com/q/" + statement + "?s=" + ticker_symbol 
     if not quarterly: 
      url += "&annual" 
     return BeautifulSoup(requests.get(url).text, "html.parser") 

    return sys.exit("Invalid financial statement code '" + statement + "' passed.") 

print(periodic_figure_values(financials_soup("AAPL", "is"), "Income Tax Expense")) 

"""throws error: An exception has occurred, use %tb to see the full traceback. 

SystemExit: Invalid figure 'Income Tax Expense' passed.""" 
+0

代わりにQuandlの使用を検討しましたか? (FWIW、私はこれらの企業と提携していない) –

答えて

0

Yahooファイナンスでは、Java Scriptを使用しています。それで美しいスープはうまくいかないでしょう。少なくともこれは私に言われたことです。セレンは、このようなサイトのための正しいツールでなければなりません。

ここでは、私は似たような質問をしたリンクであり、そのリンクで動作するコードです。よくほとんど。ここで

How should I properly use Selenium

は、私のコメントは、私はそれを動作させるために変更何の応答です:コードは、後でこれを反映するように変更された場合(がわからない、それかどうかを確認し、私は2-3小さな、些細な物事を変更する必要がありました

私は少しコードを変更しなければならなかったので、私はインターネットを検索し、私はWebDriverWaitを待ちましたが、それでもクリックしませんでした変更を使用していませんでしたbalanceSheet = WebDriverWait(browser、5)これで変更されるまで、バランスシート上で:balanceSheet = WebDriverWait(browser、5)、今は動作していて、多くのことを学んだので、プロジェクトに取り組み、プロセスでコードを書くことができます。 h! - 午前13時07


編集でAl_ 8月3日には、私の例では唯一の貸借対照表から一つのことをダウンロードするが、これはあなたがあなたのケース(財務諸表)のためにそれを行う方法を見つけ出す手助けする必要があります。コードを取得できない場合は、そのコンピュータに戻ってから作業コードを送信します。

関連する問題