0

嘿,我需要一个简单的示例来完成以下任务:
向 YQL 发送查询并接收响应
我正在从我的 Django 应用程序的 python 后端访问公共数据。

如果我只是从 YQL 复制/粘贴一个示例,它会显示“请提供有效凭据”。
我想,我需要 OAuth 授权才能做到这一点。
所以我得到了一个 API 密钥和一个共享密钥。

现在,我该怎么处理它们?
我应该使用 python oauth 库吗?这个?
http://oauth.googlecode.com/svn/code/python/oauth/

但是代码是什么?我如何将我的秘密/API 密钥与我的 yql 查询一起传递?

我想,许多 Django 程序员很想知道这一点。

4

3 回答 3

3

我刚刚发布了python-yql也可以在 pypi 上使用。它可以进行公开的、两条腿的 oauth 又名签名请求,也可以促进 3 腿的输出。

它是全新的,所以在我努力提高测试覆盖率时可能会有一些错误,但希望能满足您的需求。有关如何使用它的一些想法,请参阅源代码。

安装试用如下:

sudo easy_install yql

可以在此处提交错误/功能请求:https ://bugs.launchpad.net/python-yql

于 2009-11-14T14:59:11.453 回答
2

如果您只访问公共数据,您可以直接从 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'
于 2009-11-03T04:53:10.747 回答
0

好的,我解决了这个问题。
在 data/html 的 YQL 控制台示例中,显示了以下 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

这没用!
但是如果你在“v1/”之后插入“/public”,它就会神奇地开始工作!

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 访问)的问题仍然悬而未决。有什么建议吗?

于 2009-10-03T19:07:01.510 回答