Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/333.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 股票报价的正则表达式_Python_Regex - Fatal编程技术网

Python 股票报价的正则表达式

Python 股票报价的正则表达式,python,regex,Python,Regex,我正试图从谷歌金融网站上搜集数据,特别是股票报价。我使用的是这里的答案:,它运行良好,但只适用于谷歌。我对regex还不熟悉,注意到了需要更改的内容,但不知道如何更改 下面的代码用于解析google报价的数据以获得当前价格 m = re.search('id="ref_694653_l".*?>(.*?)<', content) 任何帮助都将不胜感激 从另一个站点抓取HTML很少是最好的解决方案。构建API是有原因的。如果您想要机器可读的财务数据,请查看 如果您不想删除HTML,请

我正试图从谷歌金融网站上搜集数据,特别是股票报价。我使用的是这里的答案:,它运行良好,但只适用于谷歌。我对regex还不熟悉,注意到了需要更改的内容,但不知道如何更改

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

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

任何帮助都将不胜感激

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


如果您不想删除HTML,请使用@minitech之类的库。永远不要尝试用正则表达式解析HTML

只要用正确的方法:

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并同样轻松地完成它,那么正则表达式并不是真正的答案。

match=re.search(“\d*\?\d*”,content)
match = re.search('<span (id="ref_\d*_l">\d*\.?\d*)</span>', content)
print match.group(1)
打印匹配组(1)
试试看。使用BeautifulSoup从HTML中提取信息要比创建一个复杂的正则表达式容易得多,它可能在任何情况下都能工作,也可能无法工作。
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())
match = re.search('<span (id="ref_\d*_l">\d*\.?\d*)</span>', content)
print match.group(1)