我正在使用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
答案 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)
希望这会奏效!