2017-10-10 7 views
0

これは私の最初の投稿ですので、そこに同様の質問がある場合は私を許してください。私は約150株の株価指数を持つcsvファイルを持っています。私は、それぞれ特定の会社の損益計算書でcsvをダウンロードするために、MorningstarのURLに各1つを投げて投げたいと思っています。誰かがここに向かう方向を教えてくれる?財務諸表をダウンロード

import pandas as pd 
import requests 
from bs4 import BeautifulSoup as soup 
import csv 

df_1 = pd.read_csv('tickers1.csv',delimiter=',') 

for i in range(len(df_1)): 
    url1 = 'https://financials.morningstar.com/ajax/Report Process4CSV.html?t=%i&reportType=is&period=12&dataType=A&order=asc&columnYear=5&number=3' %(i) 

ここから、どうすればよいかわかりません。これを行う方が理にかなっている方法はありますか?または私はここで正しい道にいるのですか?私はPythonにはかなり新しいです。

+0

私は確信していますので、このタイプの質問のための適切な場所です。特定のプログラミング問題ではありません。むしろ、トピックを説明したり、外部リソースを指したり、あまり明確に指定されていないソリューションを実装したりする要求です。 –

+0

ようこそStackOverflowへ。 [How to Ask](https://stackoverflow.com/help/how-to-ask)を読んで、何を試してみたのか、なぜそれが動作するのか、動作しないのかを教えてください。 – Antimony

+0

['urllib'](https://docs.python.org/3/library/urllib.request.html#examples)を読んでください、それはかなり安定しています –

答えて

0

これは興味深い質問だと思ったので、私はいくつかのアイデアを試しましたが、私はPythonで何もできませんでした。私は十分にPythonを知らないと思うが、私は100%あなたがそれを行うことができると確信している!とにかく、私はExcelをかなりよく知っているので、VBA & Excelを使って、あなたのための解決策をまとめました。

Sub HTML_Table_To_Excel() 

Dim htm As Object 
Dim Tr As Object 
Dim Td As Object 
Dim Tab1 As Object 


'Replace the URL of the webpage that you want to download 
Web_URL = "http://www.advfn.com/stock-market/NASDAQ/MSFT/financials?btn=annual_reports&mode=company_data" 

'Create HTMLFile Object 
Set HTML_Content = CreateObject("htmlfile") 

'Get the WebPage Content to HTMLFile Object 
With CreateObject("msxml2.xmlhttp") 
.Open "GET", Web_URL, False 
.send 
HTML_Content.body.innerHTML = .responseText 'this is the highlighted part for the error 
End With 

Column_Num_To_Start = 1 
iRow = 1 
iCol = Column_Num_To_Start 
iTable = 0 

    'Loop Through Each Table and Download it to Excel in Proper Format 
    For Each Tab1 In HTML_Content.getElementsByTagName("table") 

     If iTable > 2 And iTable < 6 Then 
      With HTML_Content.getElementsByTagName("table")(iTable) 
      For Each Tr In .Rows 
      For Each Td In Tr.Cells 
      Sheets(1).Cells(iRow, iCol).Select 
      Sheets(1).Cells(iRow, iCol) = Td.innerText 
      iCol = iCol + 1 
      Next Td 
      iCol = Column_Num_To_Start 
      iRow = iRow + 1 
      Next Tr 
      End With 

      iCol = Column_Num_To_Start 
      iRow = iRow + 1 
     End If 

     Debug.Print iTable 
     iTable = iTable + 1 
    Next Tab1 

MsgBox "Process Completed" 
End Sub 

明らかに、これはPythonのソリューションではありませんが、うまくいけば、あなたはそれを使用するためにあなたの要件に十分に柔軟であり、私はここで、とにかく他の解決策を見ていません。これが便利な場合は、ループを追加して複数の株価情報を表示し、それぞれのデータをインポートすることができます。私はあなたがGoogleの財務を使ってこれを行うことができると確信しています。 Googleデータを使用する場合は、そのデータソースを使用してソリューションを構築します(基本的に同じである必要がありますが、特定の財務指標がどのように定義されているかによって若干異なる場合があります)。