2016-12-30 17 views
2

私は(以下read_htmlを使用しています)(ペイウォールの背後にある)テーブルを読み取るために呼び出す:パンダread_html()不足している列

df = pd.read_html('http://markets.ft.com/data/equities/tearsheet/' + 
       'financials?s=BAG:LSE&subView=BalanceSheet&periodType=a')[0] 

それはそれは最後の2列に欠落していること以外に、細かい解析します。最近のバージョンのAnaconda(Python 3.5、pandas 0.18.1、html5lib、BeautifulSoup4)を使用しています。

出力の開始は、次のようになります。

   Fiscal data as of Jan 30 2016 2016 2015 2014 
             ASSETS NaN  NaN  NaN 
      Cash And Short Term Investments 6.80  25  13 
         Total Receivables, Net 50  49  45 
          Total Inventory 16  17  16 

HTMLの開始は、次のようになります(それをすべて表示するには大きすぎる):

<table class="mod-ui-table"> 
      <thead> 
       <tr> 
        <th class="mod-ui-table__header--text">Fiscal data as of Jan 30 2016</th> 
        <th>2016</th> 
        <th class="mod-ui-hide-xsmall">2015</th> 
        <th class="mod-ui-hide-xsmall">2014</th> 
        <th class="mod-ui-hide-xsmall">2013</th> 
        <th class="mod-ui-hide-xsmall">2012</th> 
       </tr> 
      </thead> 
      <tr class="mod-ui-table__row--section-header"> 
       <th colspan="6">ASSETS</th> 
      </tr> 
      <tr class="mod-ui-table__row--striped"> 
       <th class="mod-ui-table__header--row-label">Cash And Short Term Investments</th> 
       <td>6.80</td> 
       <td class="mod-ui-hide-xsmall">25</td> 
       <td class="mod-ui-hide-xsmall">13</td> 
       <td class="mod-ui-hide-xsmall">0.91</td> 
       <td class="mod-ui-hide-xsmall">8.29</td> 
      </tr> 
      <tr> 
       <th class="mod-ui-table__header--row-label">Total Receivables, Net</th> 
       <td>50</td> 
       <td class="mod-ui-hide-xsmall">49</td> 
       <td class="mod-ui-hide-xsmall">45</td> 
       <td class="mod-ui-hide-xsmall">42</td> 
       <td class="mod-ui-hide-xsmall">37</td> 
      </tr> 

終了のHTMLは次のようになります。

<tr class="mod-ui-table__row--highlight"> 
        <th class="mod-ui-table__header--row-label">Total liabilities &amp; shareholders&#39; equity</th> 
        <td>269</td> 
        <td class="mod-ui-hide-xsmall">255</td> 
        <td class="mod-ui-hide-xsmall">227</td> 
        <td class="mod-ui-hide-xsmall">215</td> 
        <td class="mod-ui-hide-xsmall">196</td> 
       </tr> 
       <tr class="mod-ui-table__row--striped"> 
        <th class="mod-ui-table__header--row-label">Total common shares outstanding</th> 
        <td>117</td> 
        <td class="mod-ui-hide-xsmall">117</td> 
        <td class="mod-ui-hide-xsmall">117</td> 
        <td class="mod-ui-hide-xsmall">117</td> 
        <td class="mod-ui-hide-xsmall">117</td> 
       </tr> 
       <tr> 
        <th class="mod-ui-table__header--row-label">Treasury shares - common primary issue</th> 
        <td>0</td> 
        <td class="mod-ui-hide-xsmall">0</td> 
        <td class="mod-ui-hide-xsmall">0</td> 
        <td class="mod-ui-hide-xsmall">0</td> 
        <td class="mod-ui-hide-xsmall">--</td> 
       </tr> 
      </table> 

何が間違っているのかがすぐにわからない場合は、問題の原因を見つけるためにread_html()コードをステップ実行する方法についてのヒントがあります。私は今、Python/pdbでかなり初心者です。

+0

があり

それはあなたがFTのウェブサイトにログインしていない場合は、あなただけのデータの三年間を得ることが判明しました。 – langbourne

答えて

0

FTのウェブサイトにログインしていないと、3年間のデータしか得られないことが判明しました。

だから私は今、FTウェブサイトにログインする方法を試しています(たぶんツイルを使用しています)。関連する質問here

関連する問題