正则报价的股票报价

时间:2013-03-11 01:57:39

标签: python regex

我正在尝试通过Google财经网络抓取数据,特别是针对股票报价。我正在使用此处找到的答案:How to create a stock quote fetching app in python,其工作正常,但仅限谷歌。我是正则表达式的新手,并注意到需要更改的内容,但不知道该怎么做。

以下代码适用于解析Google报价的数据以获取当前价格。

m = re.search('id="ref_694653_l".*?>(.*?)<', content)

694653特定于谷歌。如果我做Zynga,ZNGA,它应该寻找:

<span id="ref_481720736332929_l">3.57</span>

我想要一个搜索

的正则表达式
id="ref_SOME_NUMBER_l">SOME_PRICE"

非常感谢任何帮助!

3 个答案:

答案 0 :(得分:2)

从其他网站抓取HTML很少是最佳解决方案。 API是出于某种原因而构建的。如果您想要机器可读的财务数据,请查看https://stackoverflow.com/a/10040996/254973

如果您坚持要抓取HTML,请使用像@minitech这样的库。您永远不应该尝试使用Regex解析HTML。 read more here

答案 1 :(得分:0)

以正确的方式做到:

import urllib2, re

from bs4 import BeautifulSoup

def get_quote(symbol):
    url = 'http://finance.google.com/finance?q=' + symbol
    soup = BeautifulSoup(urllib2.urlopen(url))

    return float(soup.find('span', id=re.compile(r'ref_\d+_l')).get_text())

如果您可以解析HTML并且可以轻松地执行此操作,则正则表达式不是真正的答案。

答案 2 :(得分:0)

match = re.search('<span (id="ref_\d*_l">\d*\.?\d*)</span>', content)
print match.group(1)