Ein Hinweis zur Kommunikation mit HTTP in Python. (Für Python3-Serie)
In Dive Into Python 3 wird der Python-Standard "urllib.request verwendet. Die Verwendung von "library / urllib.request.html)" und die Verwendung eines Drittanbieters "httplib2" werden vorgestellt, und httplib2 wird empfohlen, aber ich selbst Ich möchte so oft wie möglich Originalprodukte verwenden und benötige keine Funktion, die nur mit httplib2 verwendet werden kann. Daher werde ich vorerst versuchen, urllib.request zu verwenden.
Verwenden Sie die URLopen-Funktion des Moduls urllib.request. Geben Sie einfach die URL als Argument an. Wenn Sie den Anforderungsparameter nicht codieren müssen, können Sie nach der URL "? Param1 = value1 & param2 = value2" schreiben.
Für die Antwort wird das Objekt http.client.HTTPResponse zurückgegeben. Verwenden Sie daher die Funktion read (), um den Antworttext zu verwenden. Bekommen.
Postleitzahlensuch-API, bereitgestellt von Ibis Co., Ltd. als Testversion Versuche zu schlagen.
http_get.py
import urllib.request
with urllib.request.urlopen("http://zipcloud.ibsnet.co.jp/api/search?zipcode=4200855") as res:
html = res.read().decode("utf-8")
print(html)
Wenn der Anforderungsparameter Japanisch usw. enthält, muss er codiert werden. Es scheint, dass dies mit der Funktion urlencode () des Moduls "urllib.parse" problemlos möglich ist. Das Argument ist ein Wörterbuchtyp. Wenn mehrere Elemente gespeichert werden, wird es automatisch zu einer Parameterzeichenfolge, die durch & verbunden ist. (Keine Führung?)
Die oben angegebenen Suchparameter für Postleitzahlen wurden auf diese Weise korrigiert. (Da es sich nur um ASCII handelt, muss es nicht codiert werden ...)
http_get2.py
import urllib.request
import urllib.parse
#Anforderungsparameter codieren
params = {"zipcode":"4200855"}
encodedParams = urllib.parse.urlencode(params)
#API-Aufruf mit codierten Anforderungsparametern
with urllib.request.urlopen("http://zipcloud.ibsnet.co.jp/api/search?" + encodedParams) as res:
html = res.read().decode("utf-8")
print(html)
Recommended Posts