Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/tfs/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python获得股票价格_Python - Fatal编程技术网

Python获得股票价格

Python获得股票价格,python,Python,我正在做一个教程,从雅虎的未婚夫那里得到不同的股票价格。我有这个代码,它可以工作,但是打印出不同股票符号的价格,然后是数组括号,但不是价格。非常感谢大家的帮助 import urllib import re symbolslist = ["aapl", "spy", "goog", "nflx"] i = 0 while i < len(symbolslist): url = "http://finance.yahoo.com/q?s=" + symbolslist[i] +

我正在做一个教程,从雅虎的未婚夫那里得到不同的股票价格。我有这个代码,它可以工作,但是打印出不同股票符号的价格,然后是数组括号,但不是价格。非常感谢大家的帮助

import urllib
import re

symbolslist = ["aapl", "spy", "goog", "nflx"]

i = 0
while i < len(symbolslist):
    url = "http://finance.yahoo.com/q?s=" + symbolslist[i] + "&ql=1" 
    htmlfile = urllib.urlopen(url)
    htmltext = htmlfile.read()
    regex = '<span id="yfs_l84_' + symbolslist[i] + ' "> (.+?) </span>'
    pattern = re.compile(regex)
    price = re.findall(pattern, htmltext)
    print "the price of ", symbolslist[i], " is ", price
    i += 1
导入urllib
进口稀土
符号列表=[“aapl”、“spy”、“goog”、“nflx”]
i=0
而i
编辑:仔细想想,您的regexp根本不匹配任何内容;请检查regexp开头是否正确

EDIT2:好的,看起来你把空白放在了不需要的地方(而不是应该放的地方)。在将来格式化代码时,请尽量保持整洁,无论是供您自己使用,还是向其他人显示时。正确的regexp是:

regex = '<span id="yfs_l84_' + symbolslist[i] + '">(.+?)</span>'

因为
re.findall
返回一个列表,而不是单个项目,并且列表的字符串表示形式是
[bla,bla,bla,…]

Furhtermore,为了循环一系列项目,不要使用
,而
循环使用手动计数器和索引这不是汇编器:

for symbol in symbols:
    ...

可能是“”>之间的空格导致了问题

这段代码编写后,Yahoo可能更改了他们的HTML。您是否仔细检查了它要查找的范围是否仍然存在?为什么不在符号列表中使用for循环;
for符号:
?在关闭
之前,您的正则表达式有一个额外的空格。”
在定价前后,我可能会使用BeautifulSoup进行HTML解析,因为它有一些内置的错误更正,并且更容易用于此类用例。非常确定yahoo过去有一个选项可以将价格作为CSV获取——如果仍然存在的话,这将简化你的解析过程。尝试并执行代码并不困难,这样你就可以给出一个肯定的答案,没有任何可能。谢谢你Erik你是对的我的正则表达式写错了整个问题是我有一个介于“和”之间的空格“@Codin:一般来说,你真的需要写东西,只要看看你最后的评论:除了结尾的那一个,没有一个标点符号,即使你的评论由三句话组成。
price = re.findall(pattern, htmltext)[0]
for symbol in symbols:
    ...