我试着通过抓取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
有一个Google财务API:
http://code.google.com/apis/finance/docs/2.0/developers_guide_protocol.html
它有一个Python客户端库:
http://code.google.com/p/gdata-python-client/
这个问题已经很老了,但选定的答案不再有效。
API已被弃用。
有一个开源项目可以从Google财务中筛选出所有公司,并将其与当前的价格进行匹配,价格为http://scrape-google-finance.compunect.com/
该项目解决了大多数问题,包括缓存、IP管理,工作稳定,不会被阻塞。
它使用内部财务公司匹配的api来筛选公司,并使用图表api来获取价格。 但是它是php代码,而不是python。你仍然可以学习它如何解决任务并适应它。
为了避开像Google、Wikipedia或Yahoo这样的大多数限速或bot检测,欺骗你的用户代理。
这将使您的脚本请求看起来来自最新版本的Google Chrome。
相关问题 更多 >
编程相关推荐