Как войти в Google с модулем Python Requests?

Я хотел бы взаимодействовать с Google Trends с помощью модуля Python Requests. Google Trends требует аутентификации для доступа к данным Google Trends. Есть ли способ программно войти в систему с помощью запросов? Мне кажется, что OAuth 2.0 мне не подойдет, так как я не использую Google API.


person Community    schedule 02.07.2013    source источник
comment
Что вы подразумеваете под «доступом к данным Google Trends»? Вы имеете в виду функцию «загрузить как CSV»?   -  person Lukasa    schedule 03.07.2013
comment
Да, это именно то, что я хочу сделать.   -  person    schedule 03.07.2013


Ответы (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
person brechin    schedule 26.12.2013