雅虎财经 - 不完整的检索组件

-1 python api yahoo-finance

我试图在python中写下一个函数来检索索引的组件列表.所以我想说看看FTSE100(^ FTSE),我想得到它的所有组件(100个)或更多信息.

我可以通过添加标志来获得有关组件的更多信息(请参阅此内容).

但是,给定索引,我只能检索前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'
Run Code Online (Sandbox Code Playgroud)

这样解析组件标题非常容易.

如何获得重新组合的49个组件?请注意,在我查看FTSE250或更高版本的情况下,未检索到的组件可能会更多.

没有答案:

所以我做了一些研究,尝试了很多标志组合,找到并阅读了这个评论帖:code.google.com/p/yahoo-finance-managed/wiki/csvQuotesDownload; 我得出结论,不可能将索引的所有组件下载为CSV.

如果你有/有同样的问题,而不仅仅是使用BeautifulSoup.你可能不喜欢这种方法,但没有其他办法.

解决我的大多数问题

Jon*_*nts 5

如果你这样做的话,表格的顶部会有一个小链接last- 它会给你最后一个页码 - http://finance.yahoo.com/q/cp?s=%5EFTSE&c=2(从你的例子中)然后拆分出来创建一个范围range(number)来循环并请求页面类似于你现在的表现.

  1. 打开初始页面
  2. 通过lxml.html或BeautifulSoup提取链接
  3. 解析最后一页的编号
  4. 循环检索每个页面的页数

另外,我非常肯定雅虎!其中一些必须有API吗?