如何通过Python请求传递curl选项?

时间:2017-03-19 22:12:26

标签: python curl salesforce python-requests

我正在使用Desk.com api。其中一个限制是它们只允许调用500页的记录。如果您需要下载超过500个页面,则需要使用curl -d选项对数据进行排序/过滤。通常,我通过将'since_id'选项设置为更高的ID并下载500多个页面来执行此操作。这基本上告诉桌面数据库向我发送最多500页的数据,因为_id = x

通常我使用os.popen()在python中运行它,但我想尝试将其切换到requests.get(),因为这应该可以在Windows设备上更好地工作。

os.popen("curl https://www.URL.com -u username:password -H 'Accept:application/json' -d 'since_id=someID&sort_field=id&sort_direction=asc' -G")

对于请求,我尝试了许多不同的方式运行它,包括尝试传递-d参数。

payload = '-d 'since_id=someID&sort_field=id&sort_direction=asc' -G'
payload(alternate) = "{"-d":"'since_id=someID&sort_field=id&sort_direction=asc'","-G":""}"
requests.get('https://www.URL.com',auth=('username','password'),data=payload)

老实说,在第二次尝试有效载荷变量时,我不确定如何处理-G。

I have tried the following.
    *including '-G' in the "-d" value of the json as well as putting it in its own dict
    *a few different variations including switching 'data' to 'params' on the requests.get line.
    *Adding/removing single quotes on the -d value in the get request

2 个答案:

答案 0 :(得分:0)

curl中的-d参数对应于请求中的查询参数。这样的事情应该有效:

payload = {'since_id': 'someID', 'sort_field': 'id', 'sort_direction': 'asc'}
requests.get('https://www.example.com', params=payload)

答案 1 :(得分:0)

我假设api使用基本身份验证。

import requests
from requests.auth import HTTPBasicAuth
payload = {'something':'value'}
requests.get('http://myurl.com', auth=HTTPBasicAuth('user', 'pass'), params=Payload)

希望这会奏效!