Python Requests モジュールを使用して Google トレンドとやり取りしたいと考えています。Google トレンドでは、Google トレンド データにアクセスするために認証が必要です。リクエストを使用してプログラムでログインする方法はありますか? 私は Google API を使用していないため、OAuth 2.0 は機能しないようです。
1149 次
1 に答える
1
グラフの作成に使用する未加工の JSON を取得することで、実際にはより興味深いデータを取得できると思います。これには、CSV ダウンロードに付属していない関連する見出しが含まれています。これは、クォータに達する前にいくつかのクエリ (5?) で機能します。
import re
import requests
_GOOGLE_TRENDS_URL = 'http://www.google.com/trends/trendsReport?hl=en-US&content=1&q=%s&hl=en-US&content=1'
term = 'foo'
response = requests.get(_GOOGLE_TRENDS_URL % term)
if response.status_code == requests.codes.ok:
data_line = [l for l in response.content.splitlines() if 'var chartData' in l][0]
chart_data = re.sub(r'.*var chartData = (.*?);.*', r'\1', data_line)
# Fix for date representation
chart_data = re.sub(r'new Date\((\d+), (\d+), (\d+)\)', r'"\1-\2-\3"', chart_data)
data = json.loads(chart_data)
#data = {
# ...,
# "rows": [
# [
# {
# "f": "January 2004",
# "v": "2004-0-16"
# }, # Date
# null, # annotation
# null, # annotation text
# 91, # count
# null, # annotation (2?)
# null, # annotationText (2?)
# true # certainty
# ],
#...
# ]
#}
for row in data['rows']:
if '2013' in row[0]['v']:
print '%s: %d' % (row[0]['f'], row[3])
else:
print response.status_code
print response.text
収量:
January 2013: 21
February 2013: 21
March 2013: 21
April 2013: 20
May 2013: 20
June 2013: 20
July 2013: 20
August 2013: 21
September 2013: 19
October 2013: 20
November 2013: 21
December 2013 (partial data): 22
于 2013-12-26T20:39:34.187 に答える