首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PatentsView接口调用

PatentsView接口调用
EN

Stack Overflow用户
提问于 2020-06-13 13:55:49
回答 2查看 93关注 0票数 0

以前,我对PatentsView的呼叫是有效的。具体地说,我记得运行下面的代码块(来自另一个stackoverflow post)并得到一个无错误的输出。现在我得到了一个400错误。导致这种情况的原因可能是什么?也许是请求库?我通过在浏览器中粘贴以下结果来获得结果,但不能使用requests库进行复制(即使我减少了查询参数以简化调用)。参数f和o不是必需的,"_and“标准也不是必需的。您只需在url和问号后面传递q={"_gte":{"patent_date":"2007-01-04"}}即可获得有效结果。这很奇怪。

https://www.patentsview.org/api/patents/query?q={"_and":[{"_gte":{"patent_date":"2007-01-04"}},{"_lt":{"patent_date":"2007-01-31"}}]}&f=["patent_abstract"]&o={"page":2,"per_page":50}

代码语言:javascript
复制
from urllib.request import Request, urlopen
import json

url = "http://www.patentsview.org/api/patents/query"
author = "Jobs"
title = "computer"
data = {
    'q':{
        "_and":[
            {"inventor_last_name":author},
            {"_text_any":{"patent_title":title}}
        ]
    }, 
    'o':{"matched_subentities_only": "true"}
}
resp = urlopen(Request(url, json.dumps(data).encode()))
data = resp.read()
#data = json.loads(data)
EN

回答 2

Stack Overflow用户

发布于 2020-06-13 14:35:21

我认为你应该只json.dumps data的值。

您可以按如下方式对其进行解析:

代码语言:javascript
复制
from urllib.request import Request, urlopen
from urllib.parse import urlencode
import json

url = "http://www.patentsview.org/api/patents/query"
author = "Jobs"
title = "computer"
data = {
    'q':{
        "_and":[
            {"inventor_last_name":author},
            {"_text_any":{"patent_title":title}}
        ]
    }, 
    'o':{"matched_subentities_only": "true"}
}

data = dict(map(lambda x: (x[0], json.dumps(x[1])), data.items() ))

resp = urlopen(Request(url +'?' + urlencode(data)))
print(resp.read())

这应该可以解决这个问题

票数 1
EN

Stack Overflow用户

发布于 2020-06-13 14:19:04

这似乎起作用了:

代码语言:javascript
复制
import json
from urllib.request import Request, urlopen
import urllib

data = {
    'q':{
        "_and":[
            {"inventor_last_name":author},
            {"_text_any":{"patent_title":title}}
        ]
    }, 
    'o':{"matched_subentities_only": "true"}
}

base_url = "http://www.patentsview.org/api/patents/query"

url = base_url + "?q=" + urllib.parse.quote(json.dumps(data["q"]))

res = urlopen(url)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62356089

复制
相关文章

相似问题

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