首页 > 解决方案 > 引用 URL 的路径部分,但不引用参数

问题描述

我有以下形式的 URL https://website.com/chill & relax/folder/file.txt?a=1&b=2(该链接是一个虚拟示例,它并不意味着工作)

当我将此 URL 粘贴到 Firefox 中时,我可以获取所需的file.txt,但是当我尝试使用 python 和请求检索文件时,它不起作用:

>>> import requests
>>> url = "https://website.com/chill & relax/folder/file.txt?a=1&b=2"
>>> requests.get(url)

Traceback (most recent call last):
[...]
urllib3.exceptions.NewConnectionError: <urllib3.connection.VerifiedHTTPSConnection object at 0x00982B70>: 
Failed to establish a new connection: [WinError 10060] [...]

为什么 Firefox 可以请求文件但不能requests?如何仅在我的 URL 的路径部分替换空格和“&”符号?

编辑:我现在相信请求实际上可以使用包含空格的 URL 执行请求。我认为这个问题与我的代理有关,Firefox 可以使用我的代理,但是在 PyCharm 中执行的请求命令被我的代理停止。

标签: pythonurlpython-requests

解决方案


对于路径编码,您可以使用:

from requests.utils import requote_uri
url = requote_uri("https://website.com/chill & relax/folder/file.txt?a=1&b=2")

但是即使在浏览器中,链接也对我不起作用。链接真的有效吗?


推荐阅读