尝试使用Python3.5从Yahoo Finance中提取股票数据

尝试使用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'

你好,我有这个代码,但我得到这些错误

主循环“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'
        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()
返回的响应对象,记住在进一步处理之前对每一行进行解码。