页面抓取从谷歌财务获取价格

use*_*060 4 python screen-scraping google-finance urllib stockquotes

我试图通过刮取谷歌财经页面获得股票价格,我在python中这样做,使用urllib包,然后使用正则表达式获取价格数据.

当我让我的python脚本运行时,它最初工作一段时间(几分钟),然后开始抛出异常[HTTP错误503:服务不可用]

我猜这种情况正在发生,因为在Web服务器端它会检测到频繁的页面更新为机器人并在一段时间后抛出此异常.

有没有办法解决这个问题,即删除一些cookie或创建一些cookie等.

或者甚至更好,如果谷歌给了一些api,我想在python中做这个,因为python中的完整应用程序,但如果python中没有可用的东西,我可以考虑替代方案.这是我在循环中用来获取数据的python方法(几秒钟的休眠时间我在循环中调用这个方法)

 def getPriceFromGOOGLE(self, symbol):
    """ 
    gets last traded price from google for given security
    """         
    toReturn = 0.0
    try:
        base_url = 'http://google.com/finance?q='
        req = urllib2.Request(base_url + symbol)
        content = urllib2.urlopen(req).read()
        namestr = 'name:\"' + symbol + '\",cp:(.*),p:(.*),cid(.*)}'
        m = re.search(namestr, content)
        if m:
            data = str(m.group(2).strip().strip('"'))
            price = data.replace(',','')
            toReturn = float(price)
        else:
            print 'ERROR ' + str(symbol) + ' --- ' + str(content)      
    except Exception, exc:
        print 'Exc: ' + str(exc)       
    finally: 
        return toReturn
Run Code Online (Sandbox Code Playgroud)

Joh*_*ohn 5

问题已经很久了,但选定的答案已经无效了.
该API已被弃用.

有一个开源项目可以从Google财经中搜集所有公司,并在http://scrape-google-finance.compunect.com/上将它们与当前价格相匹配.
该项目解决了大多数问题,包括缓存,IP管理和稳定工作被封锁了.
它使用内部财务公司匹配api来刮公司和图表api来获得价格.然而它是PHP代码,而不是python.您仍然可以了解它如何解决任务并使其适应.