尝试使用Python3.5从Yahoo Finance中提取股票数据
你好,我有这个代码,但我得到这些错误 主循环“tuple”对象没有属性“read”和 主循环模块“urllib”没有属性“urlopen”尝试使用Python3.5从Yahoo Finance中提取股票数据,python,Python,你好,我有这个代码,但我得到这些错误 主循环“tuple”对象没有属性“read”和 主循环模块“urllib”没有属性“urlopen” def pullData(stock): try: fileLine = stock+'.txt' urlToVisit = 'http://chartapi.finance.yahoo.com/instrument/1.0/'+stock+'/chartdata;type=quote;range=10d/csv'
def pullData(stock):
try:
fileLine = stock+'.txt'
urlToVisit = 'http://chartapi.finance.yahoo.com/instrument/1.0/'+stock+'/chartdata;type=quote;range=10d/csv'
sourceCode = urllib.urlopen(urlToVisit).read()
splitSource = sourceCode.split('\n')
for eachLine in splitSource:
splitLine = eachLine.split(',')
if len(splitLine)==6:
if 'values' not in eachLine:
saveFile = open(fileLine,'a')
lineToWrite = eachLine+'\n'
saveFile.write(lineToWrite)
print('Pulled',stock)
print('sleeping')
time.sleep(5)
except Exception as e:
print('main loop',str(e))
pullData(stockToPull)
在Python 3中,urlopen()
from urllib.request import urlopen
sourceCode = urlopen(urlToVisit).read()
对于代码的其余部分,最好使用HTML解析器,例如或。您是如何得到两个错误的?mhawke的回答有用吗?谢谢。解决这个问题。但是,现在我在运行最后一行代码时得到了这个消息:pullData(stockToPull)main循环需要一个类似字节的对象,而不是'str'urllib.urlopen(urlToVisit).read()
返回一个bytes
对象。然后尝试使用str
对象拆分bytes对象,这是无法完成的。在使用splitSource=sourceCode.decode('ascii').split('\n')
进行拆分之前,您需要对bytes对象进行解码,或者只需迭代urlopen()
返回的响应对象,记住在进一步处理之前对每一行进行解码。