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