首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >股票报价的正则表达式

股票报价的正则表达式
EN

Stack Overflow用户
提问于 2013-03-11 09:57:39
回答 3查看 1.5K关注 0票数 1

我正在尝试从谷歌金融网上抓取数据,特别是股票行情。我在这里使用的答案是:How to create a stock quote fetching app in python,它工作得很好,但只适用于谷歌。我是regex的新手,注意到需要更改的内容,但不确定如何进行更改。

下面的代码用于解析google报价的数据,以获得当前价格。

代码语言:javascript
复制
m = re.search('id="ref_694653_l".*?>(.*?)<', content)

不过,694653是专门针对谷歌的。如果我做Zynga,ZNGA,它应该寻找:

代码语言:javascript
复制
<span id="ref_481720736332929_l">3.57</span>

我想要有一个正则表达式来搜索

代码语言:javascript
复制
id="ref_SOME_NUMBER_l">SOME_PRICE"

任何帮助都将不胜感激!

EN

回答 3

Stack Overflow用户

发布于 2013-03-11 10:05:36

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

如果你不喜欢抓取HTML,可以使用@minitech这样的库。您永远不应该尝试使用Regex解析HTML。read more here

票数 2
EN

Stack Overflow用户

发布于 2013-03-11 10:20:19

只要用正确的方式做就行了:

代码语言:javascript
复制
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并完成它,那么正则表达式并不是真正的答案。

票数 0
EN

Stack Overflow用户

发布于 2013-03-11 10:25:34

代码语言:javascript
复制
match = re.search('<span (id="ref_\d*_l">\d*\.?\d*)</span>', content)
print match.group(1)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15330079

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档