【问题标题】:Translate curl to python [duplicate]将 curl 转换为 python [重复]
【发布时间】:2016-05-28 10:07:17
【问题描述】:

我有一个有效的 curl 请求:

curl "https://api.propublica.org/campaign-finance/v1/2016/candidates/search.json?query=Wilson" 
-H "X-API-Key: PROPUBLICA_API_KEY"

如何将其翻译成 Python?我尝试了以下方法:

payload = {'X-API-Key': 'myapikey'}
r = requests.get("https://api.propublica.org/campaign-finance/v1/2016/candidates/search.json?query=Wilson", params = payload)

然后,我得到了:

>>> print(r.url)
https://api.propublica.org/campaign-finance/v1/2016/candidates/search.json?query=Wilson&X-API-Key=myapikey
>>> r.text
u'{"message": "Forbidden"}'

【问题讨论】:

  • 参数是获取参数,你想要标题:r = requests.get(url, headers={'X-API-Key': 'myapikey'})
  • 成功了,谢谢!
  • 对标记为重复的人说:它不是重复的! OP 没有询问如何发送标头(如另一个问题),但有一个可以通过发送标头来解决的问题。

标签: python curl


【解决方案1】:

将您的curl 工作翻译为python 的最简单方法是使用pycurl 而不是requests

但是,您的Forbidden 问题并不依赖于使用requestspycurl。它来自将X-API-Key 作为查询参数发送,而不是作为标头发送(就像您在curl 调用中所做的那样)。

【讨论】:

  • 是的——发送标头而不是查询参数就可以了。谢谢。
【解决方案2】:

试试这个:

import urllib2
url = your_url
payload = {'X-API-Key': 'myapikey'}
req = Request(url, payload, {'Content-Type': 'application/json'})
open = urlopen(req)

在此之后,您可以使用任何您想打印的方式。希望这对你有用。

【讨论】:

    猜你喜欢
    • 2017-11-29
    • 2019-01-25
    • 1970-01-01
    • 2016-12-31
    • 2011-03-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-30
    相关资源
    最近更新 更多