尝试使用API​​将数据从url拉入python时遇到问题

时间:2014-04-17 16:08:59

标签: python api csv curl

我试图以csv格式从网站上的图表中提取数据。我尝试过不同的代码组合,但似乎无法弄明白。根据我写的代码,我不断收到以下错误:

TypeError:' set'对象不可订阅 TypeError:需要浮点数

我的最新尝试看起来像这样:

import urllib   
import urllib2    
import csv    
import StringIO


url = "https://api.rjmetrics.com/0.1/chart/chartid/export"    
headers = {"X-RJM-API-Key": "myapikey"}
data = {"format=csv"}
response = urllib2.Request(url, data, headers)    
re = urllib2.urlopen(response)    
spamreader = csv.reader(re, delimiter=',', quotechar='|')    
for row in spamreader:    
    print row

工作的CURL版本如下所示:

curl -d "format=csv" -H "X-RJM-API-Key: myapikey" https://api.rjmetrics.com/0.1/chart/chartid/export

但我不知道如何使用curl。

谢谢!

2 个答案:

答案 0 :(得分:0)

data应该是一个url编码的字符串,你传递一个集合 - {“format = csv”}是一个集合文字。试试这个:

data = urllib.urlencode(dict(format='csv'))

答案 1 :(得分:0)

对于此类任务,您应该使用Requests包。这样你就可以正确设置标题:

headers = {'X-RJM-API-Key': 'myapikey', 'content-type: text/csv'}
r = requests.get('https://api.rjmetrics.com/0.1/chart/chartid/export', headers=headers)

然后使用默认的csv阅读器。