Как получить доступ к YQL в Python (Django)? - PullRequest
0 голосов
/ 03 октября 2009

Эй, мне нужен простой пример для следующей задачи:
Отправьте запрос в YQL и получите ответ
Я получаю доступ к общедоступным данным из Python-приложения моего приложения Django.

Если я просто скопирую / вставлю пример из YQL, появится надпись «Пожалуйста, предоставьте действительные учетные данные».
Полагаю, для этого мне нужно разрешение OAuth.
Итак, я получил ключ API и общий секрет.

Теперь, что мне с ними делать?
Должен ли я использовать библиотеку Python oauth? Этот?
http://oauth.googlecode.com/svn/code/python/oauth/

Но что это за код? Как передать секретный ключ / ключ API вместе с запросом yql?

Думаю, многим программистам Django хотелось бы знать это.

Ответы [ 3 ]

3 голосов
/ 14 ноября 2009

Я только что выпустил python-yql , также доступный на pypi. Он может выполнять публичные двухсторонние oauth a.k.a подписанные запросы и облегчать трехсторонний аут.

Это совершенно новый продукт, поэтому могут быть некоторые ошибки, пока я работаю над улучшением тестового покрытия, но, надеюсь, сделаю то, что вам нужно. См. Источник для некоторой идеи о том, как использовать это.

Установка, чтобы попробовать это следующим образом:

sudo easy_install yql

Запросы об ошибках / функциях можно подать здесь: https://bugs.launchpad.net/python-yql

2 голосов
/ 03 ноября 2009

Если у вас есть доступ только к публичным данным, вы можете просто сделать прямой вызов с python.

>>> import urllib2
>>> result = urllib2.urlopen("http://query.yahooapis.com/v1/public/yql?q=select%20title%2Cabstract%20from%20search.web%20where%20query%3D%22paul%20tarjan%22&format=json").read()
>>> print result[:100]
{"query":{"count":"10","created":"2009-11-03T04:47:01Z","lang":"en-US","updated":"2009-11-03T04:47:0

И затем вы можете проанализировать результат с помощью simplejson.

>>> import simplejson
>>> data = simplejson.loads(result)
>>> data['query']['results']['result'][0]['title']
u'<b>Paul</b> <b>Tarjan</b> - Silicon Valley, CA | Facebook'
0 голосов
/ 03 октября 2009

Хорошо, я вроде решил проблему.
В примере консоли YQL для data / html в качестве примера был представлен следующий URL:

http://query.yahooapis.com/v1/yql?q=select+*+from+html+where+url%3D%22http%3A%2F%2Ffinance.yahoo.com%2Fq%3Fs%3Dyhoo%22+and%0A++++++xpath%3D%27%2F%2Fdiv%5B%40id%3D%22yfi_headlines%22%5D%2Fdiv%5B2%5D%2Ful%2Fli%2Fa%27

Не работает!
Но если вы вставите «/ public» после «v1 /», то оно волшебным образом начнет работать!

http://query.yahooapis.com/v1/public/yql?q=select+*+from+html+where+url%3D%22http%3A%2F%2Ffinance.yahoo.com%2Fq%3Fs%3Dyhoo%22+and%0A++++++xpath%3D%27%2F%2Fdiv%5B%40id%3D%22yfi_headlines%22%5D%2Fdiv%5B2%5D%2Ful%2Fli%2Fa%27

Но вопрос о том, как передать мой ключ API (для доступа v1 / yql), все еще остается открытым. Любой совет?

...