首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >由于出现错误,API GET请求不允许查询字符串

由于出现错误,API GET请求不允许查询字符串
EN

Stack Overflow用户
提问于 2021-07-29 09:17:52
回答 3查看 68关注 0票数 1

我正在尝试让一个API get获取一些.json格式的数据。

当我运行请求时,我在API地址中得到一个语法错误。下面是我试图运行的代码。

我可以对父站点发出一个基本的请求,然后收到一个,并且我过去在这里发送过get请求,没有任何问题。

提前感谢您的帮助。

代码语言:javascript
复制
pv_data = requests.get("https://api.patentsview.org/uspc_mainclasses/query?q={"_and":[{"_contains":{"uspc_mainclass_id":["800","424","514","506","435","436","536"]}},{"_gt"{"patent_date":"2009-12-31"}},{"_lt":{"patent_date":"2021-04-01"}}]}&f=["assignee_city","assignee_country","assignee_latitude","assignee_longitude","assignee_num_patents_for_uspc_mainclass","assignee_organization","assignee_total_num_patents","forprior_country","forprior_date"]")

...and响应

代码语言:javascript
复制
  File "<ipython-input-31-0b6aea36e1fe>", line 1
pv_data = requests.get("https://api.patentsview.org/uspc_mainclasses/query?q={"_and":[{"_contains":{"uspc_mainclass_id":["800","424","514","506","435","436","536"]}},{"_gt"{"patent_date":"2009-12-31"}},{"_lt":{"patent_date":"2021-04-01"}}]}&f=["assignee_city","assignee_country","assignee_latitude","assignee_longitude","assignee_num_patents_for_uspc_mainclass","assignee_organization","assignee_total_num_patents","forprior_country","forprior_date"]")
                                                                               ^

SyntaxError:无效语法

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2021-07-29 09:34:25

由于在url字符串中也使用了双引号,因此解释器将"字符的前两个实例之间的任何内容视为有效字符串,而不知道如何处理其余的内容。

您可以通过将开始引号设置为下面这样的'来避免此错误

代码语言:javascript
复制
pv_data = requests.get('https://api.patentsview.org/uspc_mainclasses/query?q={"_and":[{"_contains":{"uspc_mainclass_id":["800","424","514","506","435","436","536"]}},{"_gt"{"patent_date":"2009-12-31"}},{"_lt":{"patent_date":"2021-04-01"}}]}&f=["assignee_city","assignee_country","assignee_latitude","assignee_longitude","assignee_num_patents_for_uspc_mainclass","assignee_organization","assignee_total_num_patents","forprior_country","forprior_date"]')
票数 1
EN

Stack Overflow用户

发布于 2021-07-29 09:28:43

这里的问题是python弄错了应该使用哪个双引号(")来结束字符串。一种解决方案是使用\避开所有内部"

但我建议您使用request应用编程接口本身来处理查询参数。在文档中,您可以传递params关键字参数以将数据发送到URL。

代码语言:javascript
复制
>>> payload = {'key1': 'value1', 'key2': 'value2'}
>>> r = requests.get('https://httpbin.org/get', params=payload)

通过打印以下URL,您可以看到URL已正确编码:

代码语言:javascript
复制
>>> print(r.url)
https://httpbin.org/get?key2=value2&key1=value1
票数 1
EN

Stack Overflow用户

发布于 2021-07-29 09:35:07

你必须使用不同类型的引号,单引号=‘,双引号=“,或三重=’‘,让你在不同的行上写相同的句子。

代码语言:javascript
复制
'''
this is a code
'written'
on
"different"
line
'''
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68568993

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档