从google finan获取价格的页面抓取

2024-09-28 22:51:47 发布

您现在位置:Python中文网/ 问答频道 /正文

我试着通过抓取google的财务页面来获取股票价格,我用python做这个,使用urllib包,然后使用regex来获取价格数据。

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

我想这是因为在web服务器端,它检测到频繁的页面更新,并在一段时间后抛出这个异常。。

有办法解决这个问题吗,比如删除一些cookie或者创建一些cookie等等。。

或者如果google提供了一些api,我想用python来实现这一点,因为python中有完整的应用程序,但是如果python中没有可用的api来实现这一点,我可以考虑其他选择。这是我的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

Tags: 方法apiurlbasecookiegoogle页面content
3条回答

这个问题已经很老了,但选定的答案不再有效。
API已被弃用。

有一个开源项目可以从Google财务中筛选出所有公司,并将其与当前的价格进行匹配,价格为http://scrape-google-finance.compunect.com/
该项目解决了大多数问题,包括缓存、IP管理,工作稳定,不会被阻塞。
它使用内部财务公司匹配的api来筛选公司,并使用图表api来获取价格。 但是它是php代码,而不是python。你仍然可以学习它如何解决任务并适应它。

为了避开像Google、Wikipedia或Yahoo这样的大多数限速或bot检测,欺骗你的用户代理。

这将使您的脚本请求看起来来自最新版本的Google Chrome。

headers = {'User-Agent' : "Mozilla/5.0 (Windows NT 6.0; WOW64) AppleWebKit/534.24 (KHTML, like Gecko) Chrome/11.0.696.16 Safari/534.24"}
req = urllib2.Request(url,None,headers)
content = urllib2.urlopen(req).read()

相关问题 更多 >