我正在尝试在 python 中写下一个函数来检索索引的组件列表。因此,假设我想查看 FTSE100 (^FTSE),我想获取它的所有组件(其中 100 个)甚至更多信息。
我可以通过添加标志来获得有关组件的更多信息(请参阅this)。
但是,给定索引,我只能检索前 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。您可能不喜欢这种方法,但没有其他方法。