Python 引用URL的路径部分,但不引用参数

Python 引用URL的路径部分,但不引用参数,python,url,python-requests,Python,Url,Python Requests,我有一个如下形式的URLhttps://website.com/chill &relax/folder/file.txt?a=1&b=2(该链接是一个虚拟示例,并不意味着它可以工作) 当我在Firefox中粘贴此URL时,我可以获取想要的文件.txt,但当我尝试使用python和请求检索该文件时,它不起作用: >>> import requests >>> url = "https://website.com/chill & relax/folder/

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

当我在Firefox中粘贴此URL时,我可以获取想要的
文件.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] [...]

导入请求 >>>url=”https://website.com/chill &relax/folder/file.txt?a=1&b=2“ >>>requests.get(url) 回溯(最近一次呼叫最后一次): [...] urllib3.exceptions.NewConnectionError:: 无法建立新连接:[WinError 10060][…] 为什么Firefox可以请求文件,但不能请求
?如何仅替换URL路径部分中的空格和“&”符号


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

只需对路径进行URL编码,然后附加参数

import urllib.parse
url=urllib.parse.quote(“https://website.com/chill &relax/folder/file.txt“)
url+=“?a=1&b=2”
r=请求。获取(url)

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

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

但无论如何,即使在浏览器中,链接也不适用于我。链接实际有效吗?

用于URL编码您的地址(但不是参数)。这将
URL
设置为
'https%3A//website.com/chill%20%26%20relax/folder/file.txt?a=1&b=2'
,这也不起作用。您可以发布更多的回溯吗?我认为这个错误可能会在这里得到更多解释,因为文档中说
请求
自动转义spacesurllib.parse.quote编码的字符太多。另外,如何删除URL的参数部分?我通过读取文件中的数据来创建URL,我不设置路径和参数manually@JammyDodger我不是OP。显然
'https%3A//website.com/chill%20%26%20relax/folder/file.txt?a=1&b=2'
不是一个有效的URL。该链接是一个虚拟示例,它不起作用,我将编辑我的原始消息来解释这一点。谢谢你的回复,我会调查的。