Vous voulez souvent POSTER json avec un petit script Python3 (approprié).
Tout d'abord, un exemple de code.
import urllib.request, json
if __name__ == '__main__':
url = "http://xxxx/xxxx"
method = "POST"
headers = {"Content-Type" : "application/json"}
#Convertir un objet Python en JSON
obj = {"xxx" : "xxxx", 123 : 123}
json_data = json.dumps(obj).encode("utf-8")
#Préparer la requête http et le POST
request = urllib.request.Request(url, data=json_data, method=method, headers=headers)
with urllib.request.urlopen(request) as response:
response_body = response.read().decode("utf-8")
Ensuite, à titre d'exemple simple, utilisez "Niko Niko Video" Snapshot Search API "" pour lire les résultats de la recherche de "Yukari Yuzuki". J'aimerais avoir 30 vidéos avec un grand nombre.
import urllib.request, json
if __name__ == '__main__':
url = "http://api.search.nicovideo.jp/api/snapshot/"
method = "POST"
obj = {
"query" : "Yuitsuki Yukari",
"service" : ["video"],
"search" : ["title", "description", "tags"],
"join" : ["title", "view_counter"],
"sort_by" : "view_counter",
"order" : "desc",
"size" : 30,
"issuer" : "xxxxxxxxxxxxxxxxxxxxx"
}
json_data = json.dumps(obj).encode("utf-8")
headers = {"Content-Type" : "application/json"}
request = urllib.request.Request(url, data=json_data, headers=headers, method=method)
with urllib.request.urlopen(request) as response:
response_body = response.read().decode("utf-8")
result_objs = json.loads(response_body.split('\n')[0])
for result_obj in result_objs["values"]:
print("{0:<10}{1}".format(result_obj["view_counter"], result_obj["title"]))
#2903887 [Hatsune Miku] C'est le Comité du bonheur et de la sécurité. 【original】
#2331059 Uniquement w na w gi w te w te w wa www (symptôme de sevrage Shinofue L5)
#1979283 [Minecraft] Guerrilla Craft Construisez une ligne de défense autour de vous et répandez des mines terrestres.#1
#1896978 [Minecraft] Guerrilla Craft Construisez une ligne de défense autour de vous et répandez des mines terrestres.#5
#1805589 [Minecraft] Yukari "Faisons exploser la tour des mages" part1 [VOICEROID+La vraie condition]
#1662622 [Yukari Yuzuki] J'ai fait chanter un monstre sans nom [PSYCHO-PASS】
#1617931 [Minecraft] Guerrilla Craft Construisez une ligne de défense autour de vous et répandez des mines terrestres.#3
#1587257 [Hatsune Miku] J'ai trouvé un moyen d'être heureux pour toujours. 【original】
#1531263 [Yukari Yuzuki] Il semble y avoir une commande cachée qui vous rend heureux [Original]
#1499237 [Minecraft] Guerrilla Craft Construisez une ligne de défense autour de vous et répandez des mines terrestres.#2
#1424024 [Lié à Yuzuki] Churrilla Churrilla Daddadda!
#1391173 [Minecraft] Guerrilla Craft Construisez une ligne de défense autour de vous et répandez des mines terrestres.#7
#1356847 [Minecraft] Guerrilla Craft Construisez une ligne de défense autour de vous et répandez des mines terrestres.#6
#1354592 [Minecraft] Yukari "Faisons exploser la tour des mages" part3 [VOICEROID+La vraie condition]
#1261669 [Minecraft] Yukari "Faisons exploser la tour des mages" part2 [VOICEROID+La vraie condition]
#1241053 [Minecraft] Guerrilla Craft Construisez une ligne de défense autour de vous et répandez des mines terrestres.#8
#1223469 [Minecraft] Guerrilla Craft Construisez une ligne de défense autour de vous et répandez des mines terrestres.#4
#1201715 [Minecraft] Yukari "Faisons exploser la tour des mages" part4 [VOICEROID+La vraie condition]
#1182955 [Minecraft] Guerrilla Craft Construisez une ligne de défense autour de vous et répandez des mines terrestres.#9
#1177519 [Minecraft] Yukari "Faisons exploser la tour des mages" part9 [VOICE ROID+La vraie condition]
#1069852 [MAYU] Un peu de bonheur que je veux réaliser. 【original】
#1045793 [Minecraft] Guerrilla Craft Construire une ligne de défense autour et répandre des mines terrestres ⑩
#1040149 [Minecraft] Yukari "Faisons exploser la tour des mages" part5 [VOICE ROID+La vraie condition]
#1008825 [Minecraft] Yukari "Faisons exploser la tour des mages" part6 [VOICE ROID+La vraie condition]
#993675 [lié à Yuzuki] Au revoir tronçonneuse
#963262 [Minecraft] Yukari "Faisons exploser la tour des mages" part7 [VOICE ROID+La vraie condition]
#927444 [Minecraft] Yukari "Faisons exploser la tour des mages" part8 [VOICEROID+La vraie condition]
#895328 [Minecraft] Guerrilla Craft Construire une ligne de défense autour et répandre des mines terrestres ⑫
#892567 [Minecraft] Yukari "Faisons exploser la tour des mages" dernier épisode [VOICE ROID+La vraie condition]
#878046 [Minecraft] Guerrilla Craft Construire une ligne de défense autour et répandre des mines terrestres ⑪
Il y a quelques mises en garde, je vais donc les présenter brièvement également.
data
de ʻurllib.request.Request ()doivent être de type
bytes. En bref,
str ne fonctionne pas, et vous devez le convertir en utilisant ʻencode ()
| etc.http.client.HTTPResponse # read ()
qui obtient le résultat de la réponse est également de type bytes
, utilisez decode ()
etc. lors de la conversion en str
.
--json.dupms ()
convertira un objet Python en une chaîne json ( str
). Il existe également une méthode avec un nom similaire, json.dump ()
, mais c'est différent.json.loads ()
et json.load ()
sont différents.
--ʻ La valeur de retour de urllib.request.urlopen () ʻis http.client.HTTPResponse
.Recommended Posts