Python获取股票价格

时间:2013-10-23 21:13:16

标签: 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] + "&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

2 个答案:

答案 0 :(得分:1)

编辑:第二个想法,你的正则表达式根本不匹配任何东西;请检查正则表达式是否正确。

EDIT2:好的,看起来你正在把空白放在不需要的地方(并没有把它放在应该的位置)。在格式化代码时,请在将来尝试更加整洁,既可供您自己使用,也可在向其他人展示时使用。正确的正则表达式是:

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

除此之外......

最简单的解决方法是更改​​此

price = re.findall(pattern, htmltext)

price = re.findall(pattern, htmltext)[0]

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

Furhtermore ,为了循环一系列项目,不要使用带有手动计数器和索引的while循环 - 这不是汇编程序:

for symbol in symbols:
    ...

答案 1 :(得分:-2)

'>&gt;之间的空格可能导致问题