<p>我在你的代码中发现了一个错误。我相信<code>if len(splitLine) == 6:</code>应该是{<cd2>}</p>
<p>例如,如果您转到:
<a href="http://chartapi.finance.yahoo.com/instrument/1.0/CJES/chartdata;type=quote;range=1y/csv" rel="nofollow">http://chartapi.finance.yahoo.com/instrument/1.0/CJES/chartdata;type=quote;range=1y/csv</a></p>
<p>然后读一读你试图分开的第一行:
20120904,19.2400,20.3900,19.1200,20.1500901600</p>
<p>它实际上使用分隔符“.”拆分为5个元素的列表。
20120904年19日
2400,20个
3900,19个
1200,20个
1500901600个</p>
<p>我修改了您的代码,使其在Python3.3.2中运行,这对我很有效,并成功地提取了所有股票数据。在我对<code>if len(splitLine) == 5:</code>进行更改之前,您的代码没有进入第一个<code>if</code>语句,因为<code>len(splitLine)</code>从来不是6。在</p>
<p>这是对我有用的代码。请注意,这是python3.3,因此我必须更改一些内容才能使其正常工作,但是应该使用与更改<code>len(splitLine)</code>相同的逻辑。在</p>
<pre><code>import urllib.request
import time
stockstoPull = 'CJES','BP','MSFT','TSLA','GOOG'
def pullData(stock):
fileLine = stock+'.txt'
urltovisit ='http://chartapi.finance.yahoo.com/instrument/1.0/'+stock+'/chartdata;type=quote;range=1y/csv'
with urllib.request.urlopen(urltovisit) as f:
sourceCode = f.read(100000).decode('utf-8')
splitSource = sourceCode.split('\n')
for eachLine in splitSource:
splitLine = eachLine.split('.')
if len(splitLine) == 5:
if 'values' not in eachLine:
saveFile = open(fileLine,'a')
linetoWrite = eachLine+'\n'
saveFile.write(linetoWrite)
else:
print('oh no')
print('Pulled', stock)
print('...')
time.sleep(.5)
for eachStock in stockstoPull:
pullData(eachStock)
</code></pre>