如何更改我的 requests.get() 函数的发送方式?
How to change the way my requests.get() function is sent?
我正在尝试创建一个 http 请求以从在线站点获取一些 json 数据。当我设置 requests.get() 函数时,它似乎将参数中的一些特殊字符转换为其他值,导致响应失败。有没有办法控制 .get() 的发送方式?
为此,这是我的代码:
response = requests.get('https://registers.esma.europa.eu/solr/esma_registers_firds_files/select',
params={'q':'*',
'fq':'publication_date:%5B2020-05-10T00:00:00Z+TO+2020-05-10T23:59:59Z%5D',
'wt':'json',
'indent': 'true',
'start':0,
'rows':100},)
但是,此代码似乎将“*”字符和“:”字符转换为不同的格式,这意味着我得到了错误的响应代码。这是当我在代码中 运行 .url() 时打印出来的:
response.url
可以看到'q'参数中的'*'变成了'%2A','fq'参数中的':'变成了'%3A',等等
我知道 link 有效,因为如果我将它直接输入 requests.get(),我会得到预期的结果。
有没有办法让 .get() 中的特殊字符不发生变化?我一直在谷歌搜索与请求模块和字符编码相关的任何内容,但没有任何运气。我可以在每次需要时使用整个 url,但我认为使用 params 是更好的做法。任何帮助将非常感激。谢谢!
这实际上不是问题所在。您看到的转化是应该发生的。它被称为URL编码。
问题出在 publication_date
值中。看到 %5B
和 %5D
以及 +
标志了吗?
'fq':'publication_date:%5B2020-05-10T00:00:00Z+TO+2020-05-10T23:59:59Z%5D'
^^^ ^ ^ ^^^
我不知道你从哪里得到这个字符串,但是这个字符串已经经过 URL 编码。 %5B
、%5D
和+
是[
、]
和space的编码形式。您需要提供未编码的值,如下所示:
'fq':'publication_date:[2020-05-10T00:00:00Z TO 2020-05-10T23:59:59Z]'
requests
将处理编码。
我正在尝试创建一个 http 请求以从在线站点获取一些 json 数据。当我设置 requests.get() 函数时,它似乎将参数中的一些特殊字符转换为其他值,导致响应失败。有没有办法控制 .get() 的发送方式?
为此,这是我的代码:
response = requests.get('https://registers.esma.europa.eu/solr/esma_registers_firds_files/select',
params={'q':'*',
'fq':'publication_date:%5B2020-05-10T00:00:00Z+TO+2020-05-10T23:59:59Z%5D',
'wt':'json',
'indent': 'true',
'start':0,
'rows':100},)
但是,此代码似乎将“*”字符和“:”字符转换为不同的格式,这意味着我得到了错误的响应代码。这是当我在代码中 运行 .url() 时打印出来的:
response.url
可以看到'q'参数中的'*'变成了'%2A','fq'参数中的':'变成了'%3A',等等
我知道 link 有效,因为如果我将它直接输入 requests.get(),我会得到预期的结果。
有没有办法让 .get() 中的特殊字符不发生变化?我一直在谷歌搜索与请求模块和字符编码相关的任何内容,但没有任何运气。我可以在每次需要时使用整个 url,但我认为使用 params 是更好的做法。任何帮助将非常感激。谢谢!
这实际上不是问题所在。您看到的转化是应该发生的。它被称为URL编码。
问题出在 publication_date
值中。看到 %5B
和 %5D
以及 +
标志了吗?
'fq':'publication_date:%5B2020-05-10T00:00:00Z+TO+2020-05-10T23:59:59Z%5D'
^^^ ^ ^ ^^^
我不知道你从哪里得到这个字符串,但是这个字符串已经经过 URL 编码。 %5B
、%5D
和+
是[
、]
和space的编码形式。您需要提供未编码的值,如下所示:
'fq':'publication_date:[2020-05-10T00:00:00Z TO 2020-05-10T23:59:59Z]'
requests
将处理编码。