Lorsque vous effectuez une requête avec la méthode POST à l'aide du module requests de python, l'URL l'encode, mais soyez prudent lorsque vous passez des valeurs de paramètres japonais.
Certains sites décodent au format Shift-JIS, auquel cas le demandeur doit également encoder et appeler au format Shift-JIS.
Si vous le transmettez à requests.post au format dict, l'encodage par défaut sera effectué, donc en utilisant le module urllib pour effectuer l'encodage d'URL, faites-le de type str et passez-le directement aux requêtes, l'encodage par défaut est également évité et encodé avec Shift-JIS. Il est possible de passer des paramètres.
import requests
import urllib.parse
#valeur du paramètre post (exemple)
item = 'Hoge'
post_data = {'KEY1':item}
# shift-Encoder avec jis et le rendre de type str
urlencode_post_data = urllib.parse.urlencode(post_data, encoding='shift-jis')
headers = {'content-type': 'text/html; charset=Shift_JIS'}
response = requests.post(<Cible URL>, urlencode_post_data, headers=headers)
――Lorsque vous traitez avec le japonais, un tel problème de code de caractère survient. Lorsque j'ai cherché une solution, je n'ai pas trouvé de solution applicable à des sites autres que les pays de langue japonaise, alors je l'ai résolue par essais et erreurs par moi-même. Je le posterai si cela aide même un peu.
Recommended Posts