Python PatentsView API调用

Python PatentsView API调用,python,python-requests,Python,Python Requests,之前我打电话给PatentsView的功能正常。具体地说,我记得运行下面的代码块(来自另一个stackoverflow帖子)并得到一个无错误的输出。现在我得到一个400错误。是什么变化导致了这种情况?也许是图书馆?我通过在浏览器中粘贴以下结果来获得结果,但无法使用请求库进行复制(即使我减少查询参数以简化调用)。不需要参数f和o,也不需要“_和”标准。您只需在url和问号后传递q={“\u gte”:{“专利日期”:“2007-01-04”}即可获得有效结果。这很奇怪 这似乎在起作用: impo

之前我打电话给PatentsView的功能正常。具体地说,我记得运行下面的代码块(来自另一个stackoverflow帖子)并得到一个无错误的输出。现在我得到一个400错误。是什么变化导致了这种情况?也许是图书馆?我通过在浏览器中粘贴以下结果来获得结果,但无法使用请求库进行复制(即使我减少查询参数以简化调用)。不需要参数f和o,也不需要“_和”标准。您只需在url和问号后传递q={“\u gte”:{“专利日期”:“2007-01-04”}即可获得有效结果。这很奇怪


这似乎在起作用:

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)

我认为您应该
json.dump
只转储
数据的值

您可以按如下方式解析它:

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())

这应该可以解决问题

大多数情况下,他们都会改变一些事情。
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())