저는 파이썬으로 초보자입니다. 현재는 파이썬으로 작은 프로젝트를 진행하고 있습니다. patentsview.org에 대한 특허 연구를위한 동적 스크립트를 만들고 싶습니다. 나는 동적 URL에 대한 올바른 시작 했어요 생각Patentsview API Python 3.4
import urllib.parse
import urllib.request
#http://www.patentsview.org/api/patents/query?q={"_and":
[{"inventor_last_name":author},{"_text_any":{"patent_title":[title]}}]}&o=
{"matched_subentities_only": "true"}
author = "Jobs"
andreq = "_and"
invln = "inventor_last_name"
text = "_text_any"
patent = "patent_title"
match = "matched_subentities_only"
true = "true"
title = "computer"
urlbasic = "http://www.patentsview.org/api/patents/query"
patentall = {patent:title}
textall = {text:patentall}
invall = {invln:author}
andall = invall.copy()
andall.update(textall)
valuesq = {andreq:andall}
valuesqand = {andreq:andall}
valuesq = {andreq:valuesqand}
valueso = {match:true}
#########
url = "http://www.patentsview.org/api/patents/query"
values = {"q":valuesq,
"o":valueso}
print(values)
data = urllib.parse.urlencode(values)
print(data)
############
data = data.encode("UTF-8")
print(data)
req = urllib.request.Request(url,data)
resp = urllib.request.urlopen(req)
respData = resp.read()
saveFile = open("patents.txt", "w")
saveFile.write(str(respData))
saveFile.close()
-하지만 인코딩은 나에게 HTTP 오류 400 줄 것으로 보인다 :
여기 내 코드입니다 잘못된 요청합니다. 인코딩하지 않으면 www.somethingsomething.org/o와 같은 URL이됩니다 : {....} 분명히 오류가 발생합니다. 내가 인코딩하면 모든 브래킷 변환 얻을 수 있기 때문에
Traceback (most recent call last):
File "C:/Users/Max/PycharmProjects/KlayerValter/testen.py", line 38, in
<module>
resp = urllib.request.urlopen(req)
File "C:\Python34\lib\urllib\request.py", line 161, in urlopen
return opener.open(url, data, timeout)
File "C:\Python34\lib\urllib\request.py", line 469, in open
response = meth(req, response)
File "C:\Python34\lib\urllib\request.py", line 579, in http_response
'http', request, response, code, msg, hdrs)
File "C:\Python34\lib\urllib\request.py", line 507, in error
return self._call_chain(*args)
File "C:\Python34\lib\urllib\request.py", line 441, in _call_chain
result = func(*args)
File "C:\Python34\lib\urllib\request.py", line 587, in http_error_default
raise HTTPError(req.full_url, code, msg, hdrs, fp)
urllib.error.HTTPError: HTTP Error 400: Bad Request
Process finished with exit code 1
, 난 같은 오류가 발생합니다 : 다음은 오류입니다. 다음과 같이 patentsview의 API가 작동 : 나는 모든 라이브러리 이름을 마련했다 동적 프로그래밍에 대한
http://www.patentsview.org/api/patents/query?q={"_or":[{"_and":
[{"inventor_last_name":"Whitney"},{"_text_phrase":{"patent_title":"cotton
gin"}}]},{"_and":[{"inventor_last_name":"Hopper"},{"_text_all":
{"patent_title":"COBOL"}}]}]}
. 더 나은 해결책이 있다면 도움을주십시오.
좋습니다.
제안 : urllib로 싸우는 대신 [요청] (http://docs.python-requests.org/en/master/) 라이브러리를 사용하십시오. 그러면 삶이 훨씬 쉬워 질 것입니다. –