1

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

下面的代码用于解析谷歌报价的数据以获取当前价格。

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"

任何帮助将不胜感激!

4

3 回答 3

2

从另一个站点抓取 HTML 很少是最好的解决方案。构建 API 是有原因的。如果您想要机器可读的财务数据,请查看https://stackoverflow.com/a/10040996/254973 。

如果您坚持要抓取 HTML,请使用提到的 @minitech 之类的库。您永远不应该尝试使用 Regex 解析 HTML。在这里阅读更多

于 2013-03-11T02:05:35.620 回答
0
match = re.search('<span (id="ref_\d*_l">\d*\.?\d*)</span>', content)
print match.group(1)
于 2013-03-11T02:25:33.750 回答
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 并同样轻松地做到这一点,那么正则表达式并不是真正的答案。

于 2013-03-11T02:20:19.300 回答