python 404当使用请求时未找到,

jq6vz3qz  于 2023-02-15  发布在  Python
关注(0)|答案(1)|浏览(238)

我从外部服务得到一些响应。然后需要从这个响应中获取URL,并通过这个URL下载一个文件。
当我从response.text传递url到urlretrieve时,urlretrieve返回一个错误。
但是当我手动复制网址的时候,然后在Python中设置变量。url = 'https://My_service_site.com/9a57v4db5_2023-02-14.csv.gz'。
urlretrieve工作正常,并通过此链接下载文件到计算机.

response = requests.post(url, json=payload, headers=headers)
#method 1 - get error
url = response.text[17:-2] #get the link like 'https://my_provide_name.com/csv_exports/5704d5.csv.gz'
urlrtv = urllib.request.urlretrieve(url=url, filename='C:\\Users\\UserName\\Downloads\\test4.csv.gz')
>>return error: HTTP Error 404 Not Found

#method 2 - works fine
url2 = 'https://my_provide_name.com/csv_exports/5704d5.csv.gz'
urlrtv=urllib.request.urlretrieve(url=url2, filename='C:\\Users\\UserName\\Downloads\\test4.csv.gz')
>>works fine

当我从方法1复制url并放入浏览器时。它工作正常。

**编辑:**为了更准确地说,我已经尝试获得的网址不喜欢响应.文本[17:-2]. Insted使用json.loads解析来自响应的网址.但仍然得到错误

a = json.loads(response.text) 
>>{'csv_file_url': 'https://service_name.com/csv_exports/746d6.csv.gz'}
url = a['csv_file_url']
print(url)
>>https://service_name.com/csv_exports/746d6.csv.gz
o0lyfsai

o0lyfsai1#

您可以尝试打印URL并验证其是否正确。您可能还需要检查访问URL是否有任何身份验证或授权要求。此外,您可以使用response.json()来解析响应中的JSON数据,而不是使用response.text后跟json.loads()。这将确保JSON格式正确,并且可以由json.loads()解析。

相关问题