urllib.URLopener()。retrieve给我http错误403

时间:2017-08-31 20:52:33

标签: python python-requests

我正在使用python manage.py shell。当我发送以下代码时:

import requests
import json
import urllib
import gzip
import csv
from usuario.models import Usuario
from calculadora.models import Prazo
r = requests.post("https://onesignal.com/api/v1/players/csv_export?app_id=*****", headers={"Authorization": "Basic *****"})
url = json.loads(r.content)["csv_file_url"]
file = urllib.URLopener()
file.retrieve(url, "C:\Users\legal\Desktop\file.gz")
f = gzip.open("C:\\Users\\legal\\Desktop\\file.gz")
arquivo = csv.reader(f)

出现以下错误:

IOError: ('http error', 403, 'Forbidden', <httplib.HTTPMessage instance at 0x05551990>)

但是,如果我先发送:

import requests
import json
import urllib
import gzip
import csv
from usuario.models import Usuario
from calculadora.models import Prazo
r = requests.post("https://onesignal.com/api/v1/players/csv_export?app_id=*****", headers={"Authorization": "Basic ******"})
url = json.loads(r.content)["csv_file_url"] 
file = urllib.URLopener()

然后:

file.retrieve(url, "C:\Users\legal\Desktop\file.gz")
f = gzip.open("C:\\Users\\legal\\Desktop\\file.gz")
arquivo = csv.reader(f)

代码运行没有任何错误,我无法理解发生了什么。

1 个答案:

答案 0 :(得分:0)

问题是同步,我使用以下方法解决这个问题:

f = urllib.URLopener() time.sleep(5) f.retrieve(url, "C:\Users\\legal\\Desktop\\file.gz")