【问题标题】:Having trouble trying to pull data from a url into python using an API尝试使用 API 将数据从 url 提取到 python 时遇到问题
【发布时间】:2014-04-17 16:08:59
【问题描述】:

我正在尝试以 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。

谢谢!

【问题讨论】:

  • 凹凸。如果您自己找到了答案,您仍然可以回答自己的问题。

标签: python api csv curl


【解决方案1】:

对于此类任务,您应该使用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 阅读器。

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-09-27
      • 1970-01-01
      • 2021-08-11
      • 2018-07-19
      相关资源
      最近更新 更多