インデックスのコンポーネントのリストを取得するために、python で関数を書き留めようとしています。FTSE100 (^FTSE) を見たいとしましょう。そのすべてのコンポーネント (数百個) またはさらに多くの情報を取得したいと考えています。
フラグを追加するだけで、コンポーネントに関する詳細情報を取得できます (これを参照してください)。
ただし、インデックスを指定すると、最初の 51 個のコンポーネントしか取得できません (このページの最初のページ: http://finance.yahoo.com/q/cp?s=%5EFTSE&c=0 )。
私の機能は次のとおりです。
at = '%40'
def getListComponents(symbol):
url = 'http://finance.yahoo.com/d/quotes.csv?s=%s%s&c=1&f=s' % (at, symbol)
return urllib.urlopen(url).read().strip().strip('"')
Output example:
'AAL.L"\r\n"ABF.L"\r\n"ADM.L"\r\n"ADN.L"\r\n"AGK.L"\r\n"AMEC.L"\r\n"ANTO.L"\r\n"ARM.L"\r\n"AV.L"\r\n"AZN.L"\r\n"BA.L"\r\n"BAB.L"\r\n"BARC.L"\r\n"BATS.L"\r\n"BG.L"\r\n"BLND.L"\r\n"BLT.L"\r\n"BNZL.L"\r\n"BP.L"\r\n"BRBY.L"\r\n"BSY.L"\r\n"BT-A.L"\r\n"CCL.L"\r\n"CNA.L"\r\n"CPG.L"\r\n"CPI.L"\r\n"CRDA.L"\r\n"CRH.L"\r\n"CSCG.L"\r\n"DGE.L"\r\n"ENRC.L"\r\n"EVR.L"\r\n"EXPN.L"\r\n"FRES.L"\r\n"GFS.L"\r\n"GKN.L"\r\n"GLEN.L"\r\n"GSK.L"\r\n"HL.L"\r\n"HMSO.L"\r\n"HSBA.L"\r\n"IAG.L"\r\n"IHG.L"\r\n"IMI.L"\r\n"IMT.L"\r\n"ITRK.L"\r\n"ITV.L"\r\n"JMAT.L"\r\n"KAZ.L"\r\n"KGF.L"\r\n"LAND.L'
このようにして、コンポーネントのタイトルを解析するのは非常に簡単です。
残りの 49 個のコンポーネントを取得するにはどうすればよいですか? FTSE250 以上を見ている場合、取得されないコンポーネントがさらに多くなる可能性があることを考慮してください。
いいえの答え:
だから私はいくつかの調査を行い、フラグの多くの組み合わせを試し、このコメントのスレッドを見つけて読んだ: code.google.com/p/yahoo-finance-managed/wiki/csvQuotesDownload ; そして、インデックスのすべてのコンポーネントを CSV としてダウンロードすることはできないと結論付けました。
BeautifulSoupを使用するだけでなく、同じ問題が発生した場合。このアプローチは気に入らないかもしれませんが、別の方法はありません。