2017-02-10 9 views
0

私はこれをincome statementとしていますが、htmlからデータを抜き出して配列に入れる方法が不思議でした。私は何を作りましたか?改善の方法に関するコメント。 stdlib、panads、numpyなどを使ってそれを行う方法を見ることに興味がありますか?おかげpythonを使用してhtmlの金融データを配列に埋め込む

import requests 
import pandas as pd 
from bs4 import BeautifulSoup 
from collections import OrderedDict 

url = r'http://gambler-restaurant-15377.bitballoon.com/' 

r = requests.get(url, headers={"User-Agent" : b'Opera/9.80 (Windows NT 5.2; U; zh-cn) Presto/2.6.30 Version/10.6'}) 
soup = BeautifulSoup(r.text, 'lxml') 

financial_statement=OrderedDict() 
for row in soup.find_all('table', attrs={'id':'dollarTable'})[0].find_all('tr'): 
    row_items = [] 
    for item in row: 
     try: 
      row_items.append(str(item.get_text(strip=True))) 
     except (AttributeError, ValueError): 
      # headers dont have a tr tag, and thus raises AttributeError 
      # 'Fiscal Year Ending in 2011' raises ValueError 
      pass 
    financial_statement[row_items[0]]=row_items[1:] 



('For year ending Dec,', ['2007', '2008', '2009', '2010', '2011', '2012', '2013', '2014', '2015']) 
('Revenues', ['306,057.0', '--', '--', '733,438.0', '390,625.0', '407,708.0', '110,000.0', '18,833.0', '10,417.0']) 
+0

はあなたのコードの仕事をしていますか?そうでない場合、何が機能していないのですか? – Evert

+0

"stdlib、panads、numpyなどを使ってそれを行う方法を見てみたいと思うでしょうか?通常、そのようなライブラリを使用しようとする試みを示し、期待どおりに機能していない場合はフィードバックを求めます。一般的なコードのレビューをお探しの場合:http://codereview.stackexchange.com/があります。 – Evert

+0

しかし、私はもっと良い解決策は、何とか各項目を関連付けられた年(dictの最初の項目)にマップすることだと考えていました。したがって、たとえば: '2007' '収入'は値 '306,057.0'と関連付けられます。 – mac

答えて

0
import requests 
import pandas as pd 
from bs4 import BeautifulSoup 
from collections import OrderedDict 

url = r'http://gambler-restaurant-15377.bitballoon.com/' 

r = requests.get(url, headers={"User-Agent" : b'Opera/9.80 (Windows NT 5.2; U; zh-cn) Presto/2.6.30 Version/10.6'}) 
soup = BeautifulSoup(r.text, 'lxml') 

financial_statement=OrderedDict() 
for row in soup.find_all('table', attrs={'id':'dollarTable'})[0].find_all('tr'): 
    row_items = [] 
    for item in row: 
     try: 
      row_items.append(str(item.get_text(strip=True))) 
     except (AttributeError, ValueError): 
      # headers dont have a tr tag, and thus raises AttributeError 
      # 'Fiscal Year Ending in 2011' raises ValueError 
      pass 
    financial_statement[row_items[0]]=row_items[1:] 



('For year ending Dec,', ['2007', '2008', '2009', '2010', '2011', '2012', '2013', '2014', '2015']) 
('Revenues', ['306,057.0', '--', '--', '733,438.0', '390,625.0', '407,708.0', '110,000.0', '18,833.0', '10,417.0']) 
+0

これは理論的に質問に答えることができますが、ここでは回答の必須部分を含めることが望ましいでしょう(http://meta.stackoverflow.com/q/8259)。 –

関連する問題