Google の金融ページをスクレイピングして株価を取得しようとしています。Python でこれを行っており、urllib パッケージを使用してから正規表現を使用して価格データを取得しています。
Python スクリプトを実行したままにしておくと、最初はしばらく (数分) 動作し、その後例外 [HTTP エラー 503: サービスを利用できません] がスローされ始めます。
これは、Web サーバー側で頻繁なページ更新をロボットとして検出し、しばらくしてからこの例外をスローするために発生していると思います..
これを回避する方法はありますか。つまり、Cookie を削除するか、Cookie を作成するなどです。
または、Googleが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