我正在尝试从谷歌金融网上抓取数据,特别是股票行情。我在这里使用的答案是:How to create a stock quote fetching app in python,它工作得很好,但只适用于谷歌。我是regex的新手,注意到需要更改的内容,但不确定如何进行更改。
下面的代码用于解析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"任何帮助都将不胜感激!
发布于 2013-03-11 10:05:36
从另一个站点抓取HTML很少是最好的解决方案。API的构建是有原因的。如果您想要机器可读的财务数据,请查看https://stackoverflow.com/a/10040996/254973。
如果你不喜欢抓取HTML,可以使用@minitech这样的库。您永远不应该尝试使用Regex解析HTML。read more here
发布于 2013-03-11 10:20:19
只要用正确的方式做就行了:
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-11 10:25:34
match = re.search('<span (id="ref_\d*_l">\d*\.?\d*)</span>', content)
print match.group(1)https://stackoverflow.com/questions/15330079
复制相似问题