[PYTHON] Obtenir une adresse à partir d'un code postal

Utilisé lorsque vous souhaitez identifier l'adresse à partir du code postal

Utilisez la recherche de zone de bureau de poste https://www.post.japanpost.jp/zipcode/index.html

Une fonction qui analyse le résultat du formulaire ci-dessus et renvoie la valeur de retour sous forme de dictionnaire

import requests
from bs4 import BeautifulSoup
import re


pref_key = {
    'Hokkaido': 1,
    'Préfecture d'Aomori': 2,
    'Préfecture d'Iwate': 3,
    'Préfecture de Miyagi': 4,
    'Akita': 5,
    'Préfecture de Yamagata': 6,
    'Préfecture de Fukushima': 7,
    'Préfecture d'Ibaraki': 8,
    'Préfecture de Tochigi': 9,
    'Préfecture de Gunma': 10,
    'Saitama': 11,
    'Préfecture de Chiba': 12,
    'Tokyo': 13,
    'Préfecture de Kanagawa': 14,
    'Préfecture de Niigata': 15,
    'Préfecture de Toyama': 16,
    'Préfecture d'Ishikawa': 17,
    'Préfecture de Fukui': 18,
    'Préfecture de Yamanashi': 19,
    'Préfecture de Nagano': 20,
    'Préfecture de Gifu': 21,
    'Préfecture de Shizuoka': 22,
    'Préfecture d'Aichi': 23,
    'Préfecture de Mie': 24,
    'Préfecture de Shiga': 25,
    'Kyoto': 26,
    'Préfecture d'Osaka': 27,
    'Préfecture de Hyogo': 28,
    'Préfecture de Nara': 29,
    'Préfecture de Wakayama': 30,
    'Préfecture de Tottori': 31,
    'Préfecture de Shimane': 32,
    'Préfecture d'Okayama': 33,
    'Préfecture d'Hiroshima': 34,
    'Préfecture de Yamaguchi': 35,
    'Préfecture de Tokushima': 36,
    'Préfecture de Kagawa': 37,
    'Préfecture d'Ehime': 38,
    'Préfecture de Kochi': 39,
    'Préfecture de Fukuoka': 40,
    'Préfecture de Saga': 41,
    'Préfecture de Nagasaki': 42,
    'Préfecture de Kumamoto': 43,
    'Préfecture d'Oita': 44,
    'Préfecture de Miyazaki': 45,
    'Préfecture de Kagoshima': 46,
    'Préfecture d'Okinawa': 47
}


def get_html_text(url: str) -> str:
    try:
        req = requests.get(url)
    except requests.exceptions.ConnectionError:
        return False
    return req.content


def getAddress(postal_code: int) -> dict:
    url = f'https://www.post.japanpost.jp/smt-zipcode/zipcode.php?zip={postal_code}'
    content = get_html_text(url)
    if not content:
        return False
    soup = BeautifulSoup(content, 'html.parser')
    dds = [i.text.strip() for i in soup.body.findAll('dd')]
    if not dds:
        return False
    dds = dds[:4]
    info = {
        'postal': dds[0].replace('-', ''),
        'pref': dds[1],
        'city': dds[2],
        'address': re.sub(r'\(.*', '', dds[3])
    }
    info['pref_no'] = pref_key[info['pref']]
    return info


if __name__ == "__main__":
    data = getAddress(1000004)
    print(data)

"""
résultat
{
  'postal': '1000004', 
  'pref': 'Tokyo', 
  'city': 'Quartier Chiyoda', 
  'address': 'Otemachi (à l'exclusion des bâtiments suivants, bâtiment JA)', 
  'pref_no': 13
}
""" 

Recommended Posts

Obtenir une adresse à partir d'un code postal
Obtenez l'adresse à partir de la latitude et de la longitude
Récupérer le code retour d'un script Python depuis bat
[Django] Créez un formulaire qui remplit automatiquement l'adresse à partir du code postal
Obtenez l'adresse IPv4 attribuée à l'interface réseau dans le code (Linux)
[Python] Récupère le code de caractère du fichier
Obtenir la liste de codes EDINET en Python
Recevez les publications wordpress de la semaine dernière
[Python] Obtenez la couleur principale de la capture d'écran
Récupérez uniquement le texte du formulaire Django.
Géocodage du code postal
Récupérer le contenu de git diff depuis python
Obtenez la version GNOME
[Python] Récupérez le texte de la loi à partir de l'API e-GOV law
Obtenir l'adresse IP locale
Obtenir le type MIME
Application console interactive pour la recherche d'adresses et de codes postaux
Appeler le code généré par Cython à partir de C / C ++ (version Windows)
Soit Code Jour 64 à partir de zéro "287. Trouver le numéro en double"
Obtenez votre fréquence cardiaque à partir de l'API fitbit en Python!
Obtenez la version du package pour vous inscrire à PyPI à partir de Git
Appeler le code généré par Cython à partir de C / C ++ (version Mac)
Obtenez la valeur tout en spécifiant la valeur par défaut de dict en Python
Soit Code Day2 à partir de zéro "1108. Defanging an IP Address"
Commerce du système à partir de Python3: obtenez le dernier code de programme
J'ai essayé d'obtenir diverses informations de l'API codeforces
Obtenir les données structurelles de CHEMBLID
Obtenez le code du pays avec python
Le désinfectant d'adresses du noyau (KASAN) (2/2)
Cherchons à partir de la ligne
Installer ansible à partir du code source
Expliquez le code de Tensorflow_in_ROS
Supprimer le cadre de l'image
J'ai tweeté depuis le terminal!
[Python] Récupérez le mois précédent
Arrêtez Omxplayer à partir du code Python
Le désinfectant d'adresse de noyau (KASAN) (1/2)
Maya | Obtenir le chemin de l'espace de travail
Vérifiez l'augmentation / la diminution des pièces de monnaie pour chaque adresse de la blockchain
Comment obtenir des abonnés et des abonnés de Python à l'aide de l'API Mastodon
[Python] Obtenir la date de mise à jour d'un article d'actualité à partir de HTML
Je vais me débarrasser de toutes les méthodes de livre de mètre de ce monde!