我正在尝试通过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"
非常感谢任何帮助!
答案 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)