Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- from bs4 import BeautifulSoup
- import requests
- from urllib.request import urlopen
- from requests.utils import quote
- def suodataOsoite(osoite):
- suodatettu=""
- loytyi=False
- p=int(0)
- while p < len(osoite):
- if osoite[p] not in "0123456789":
- loytyi=True
- suodatettu=suodatettu+osoite[p]
- else:
- if loytyi==True:
- break
- p=p+1
- loytyi=False
- while p < len(osoite):
- if osoite[p] in "0123456789":
- loytyi=True
- suodatettu=suodatettu+osoite[p]
- else:
- if loytyi==True:
- break
- p=p+1
- return suodatettu.strip()
- def postiNroToimipaikka(osoite="helsinginkatu 1",kunta="helsinki",lista=[]):
- if len(lista)==1:
- return lista[0][3]+" "+lista[0][4]
- else:
- osnro=""
- loytyi=False
- for p in range(len(osoite)):
- if osoite[p] in "0123456789":
- loytyi=True
- osnro=osnro+osoite[p]
- else:
- if loytyi==True:
- break
- if len(osnro)==0:
- return "Useampi kuin yksi vaihtoehto"
- for p in range(len(lista)):
- if int(osnro)==int(lista[p][1]):
- return lista[p][3]+" "+lista[p][4]
- for p in range(len(lista)):
- if int(osnro)>int(lista[p][1]):
- if len(lista[p][2])>0:
- if int(osnro)<=int(lista[p][2]):
- return lista[p][3]+" "+lista[p][4]
- return "Tuntematon osoite"
- def haePostinumero(osoite="helsinginkatu 1",kunta="helsinki"):
- url="http://www.verkkoposti.com/e3/"\
- +"postinumeroluettelo?streetname="\
- +quote(osoite.encode('ISO-8859-1'))\
- +"&postcodeorcommune="\
- +quote(kunta.encode('ISO-8859-1'))
- html=urlopen(url).read().decode("ISO-8859-1")
- lista=[]
- if html.find("Postinumerohaun tulos") > 0:
- soup=BeautifulSoup(html,"lxml")
- table = soup.find(class_="hidden-xs")
- kadut=table.find_all("td")
- for katu in range(0,len(kadut),4):
- rivi=[]
- katunimi=""
- katunro1=""
- katunro2=""
- postinro=""
- toimipaikka=""
- kunta=""
- katun=kadut[katu].find_all("div")
- if len(katun) > 0:
- if len(katun) > 1:
- katul=katun[1].string.strip().split(' ')
- else:
- katul=katun[0].string.strip().split(' ')
- if len(katul) == 1:
- katunimi=katul[0].strip()
- if len(katul) == 2 or len(katul) == 4:
- katunimi=katul[0].strip()
- katunro1=katul[1].strip()
- if len(katul) == 4:
- katunro2=katul[3].strip()
- toimip=kadut[katu+2].string.strip().split('\n')
- postinro=toimip[0].strip()
- toimipaikka=toimip[2].strip()
- kunta=kadut[katu+3].string.strip()
- rivi.append(katunimi)
- rivi.append(katunro1)
- rivi.append(katunro2)
- rivi.append(postinro)
- rivi.append(toimipaikka)
- rivi.append(kunta)
- lista.append(rivi)
- return lista
- def main():
- while True:
- postinumerot=[]
- kyskatu=input("Katuosoite: ")
- kyskunta=input("Kunta: ")
- kyskatu=suodataOsoite(kyskatu)
- if len(kyskatu)>0 and len(kyskunta)>0:
- postinumerot=haePostinumero(kyskatu,kyskunta)
- print(postiNroToimipaikka(kyskatu,kyskunta,postinumerot))
- elif len(kyskatu)==0 and len(kyskunta)>0:
- break
- elif len(kyskatu)>0 and len(kyskunta)==0:
- postinumerot=haePostinumero(osoite=kyskatu)
- print(postiNroToimipaikka(osoite=kyskatu,lista=postinumerot))
- else:
- postinumerot=haePostinumero()
- print(postiNroToimipaikka(lista=postinumerot))
- # for postinumero in postinumerot:
- # print(postinumero)
- if __name__ == "__main__":
- main()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement