[PYTHON] Holen Sie sich eine Adresse aus einer Postleitzahl

Wird verwendet, wenn Sie die Adresse anhand der Postleitzahl identifizieren möchten

Verwenden Sie die Postbereichssuche https://www.post.japanpost.jp/zipcode/index.html

Eine Funktion, die das Ergebnis des obigen Formulars analysiert und den Rückgabewert als Wörterbuch zurückgibt

import requests
from bs4 import BeautifulSoup
import re


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

"""
Ergebnis
{
  'postal': '1000004', 
  'pref': 'Tokio', 
  'city': 'Chiyoda Ward', 
  'address': 'Otemachi (ausgenommen die folgenden Gebäude, JA-Gebäude)', 
  'pref_no': 13
}
""" 

Recommended Posts

Holen Sie sich eine Adresse aus einer Postleitzahl
Holen Sie sich die Adresse von Längen- und Breitengrad
Holen Sie sich den Rückkehrcode eines Python-Skripts von bat
[Django] Erstellen Sie ein Formular, das automatisch die Adresse aus der Postleitzahl ausfüllt
Holen Sie sich die der Netzwerkschnittstelle zugewiesene IPv4-Adresse in Code (Linux)
[Python] Ruft den Zeichencode der Datei ab
Ruft die EDINET-Codeliste in Python ab
Holen Sie sich WordPress-Beiträge aus der letzten Woche
[Python] Holen Sie sich die Hauptfarbe aus dem Screenshot
Holen Sie sich nur den Text aus dem Django-Formular.
Geokodierung der Postleitzahl
Holen Sie sich den Inhalt von Git Diff aus Python
Holen Sie sich die GNOME-Version
[Python] Ruft den Gesetzestext aus der e-GOV-Gesetz-API ab
Holen Sie sich die lokale IP-Adresse
Holen Sie sich den MIME-Typ
Interaktive Konsolenanwendung für die Adress- und Postleitzahlensuche
Rufen Sie den von Cython aus C / C ++ (Windows-Version) generierten Code auf.
Lassen Sie Code Tag 64 ab Null "287. Finden Sie die doppelte Nummer"
Holen Sie sich Ihre Herzfrequenz von der Fitbit-API in Python!
Holen Sie sich die Paketversion, um sich bei PyPI von Git zu registrieren
Rufen Sie den von Cython aus C / C ++ (Mac-Version) generierten Code auf.
Rufen Sie den Wert ab, während Sie den Standardwert aus dict in Python angeben
Lassen Sie Code Day2 von vorne beginnen "1108. IP-Adresse löschen"
Systemhandel ab Python3: Holen Sie sich den neuesten Programmcode
Ich habe versucht, verschiedene Informationen von der Codeforces-API abzurufen
Strukturdaten von CHEMBLID abrufen
Holen Sie sich den Ländercode mit Python
Der Kernel Address Sanitizer (KASAN) (2/2)
Lassen Sie uns von der Linie suchen
Installieren Sie ansible aus dem Quellcode
Erläutern Sie den Code von Tensorflow_in_ROS
Entfernen Sie den Rahmen aus dem Bild
Ich habe vom Terminal getwittert!
[Python] Holen Sie sich den Vormonat
Stoppen Sie Omxplayer vom Python-Code
Der Kernel Address Sanitizer (KASAN) (1/2)
Maya | Ruft den Arbeitsbereichspfad ab
Überprüfen Sie die Zunahme / Abnahme der Bitmünzen für jede Adresse aus der Blockchain
So erhalten Sie mithilfe der Mastodon-API Follower und Follower von Python
[Python] Ruft das Aktualisierungsdatum eines Nachrichtenartikels aus HTML ab
Ich werde jede einzelne Yard-Pfund-Methode von dieser Welt loswerden!