· 8 years ago · Dec 28, 2017, 02:00 PM
1#http://www.kody-pocztowe.dokladnie.com/
2
3import re
4import urllib.request
5from tkinter import *
6URL1 = "http://www.kody-pocztowe.dokladnie.com/"
7URL2 = "http://www.kody-pocztowe.dokladnie.com/okreg1.php"
8URL3 = "http://www.kody-pocztowe.dokladnie.com/okreg2.php"
9URL4 = "http://www.kody-pocztowe.dokladnie.com/okreg3.php"
10URL5 = "http://www.kody-pocztowe.dokladnie.com/okreg4.php"
11URL6 = "http://www.kody-pocztowe.dokladnie.com/okreg5.php"
12URL7 = "http://www.kody-pocztowe.dokladnie.com/okreg6.php"
13URL8 = "http://www.kody-pocztowe.dokladnie.com/okreg7.php"
14URL9 = "http://www.kody-pocztowe.dokladnie.com/okreg8.php"
15URL10 = "http://www.kody-pocztowe.dokladnie.com/okreg9.php"
16
17import sqlite3
18con = sqlite3.connect('baza_kodow_pocztowych.db')
19
20con.row_factory = sqlite3.Row
21cur = con.cursor() #kursor do wykonywania operacji w bazie
22
23cur.execute(""" CREATE TABLE IF NOT EXISTS kody_pocztowe
24( id INTEGER PRIMARY KEY ASC,
25kod_pocztowy varchar(10) NOT NULL,
26ulica varchar(250) NOT NULL,
27miasto varchar(250) NOT NULL,
28wojewodztwo varchar(250) NOT NULL,
29powiat varchar(250) NOT NULL,
30gmina varchar(250) NOT NULL
31)""")
32con.commit()
33
34
35class interfejs:
36 def __init__(self,master):
37 self.kod = ''
38 self.ulica = ['']
39 self.miasto = ['']
40 self.wojewodztwo=['']
41 self.powiat=['']
42 self.gmina = ''
43 self.button1 = Button(root,text="Dodaj kod pocztowy", command=self.kod_pocztowy)
44 self.entry = Entry(root)
45 self.label1 = Label(root, text="\nSzczegoly:" )
46 self.text = Text(root,height = 5)
47 self.button2 = Button(root,text="Wyswietl baze",command=self.wyswietl_baze)
48 self.text1 = Text(root,height = 15,width=140)
49 self.button1.grid(row=0,column =1, sticky=W)
50 self.entry.grid(row=0,column=0,padx=10,pady=10)
51 self.label1.grid(row =1, column=0, sticky=N+E)
52 self.text.grid(row=1,column=1, rowspan=2,padx=10,pady=10,sticky=W)
53 self.button2.grid(row=3,column=0,sticky=N+E,padx=10)
54 self.text1.grid(row=3,column=1, padx=10,pady=10)
55 def get_code(self):
56 a = self.entry.get()
57 return a
58 def doRequest(self,url):
59 return urllib.request.urlopen(url).read().decode('windows-1250')
60 def kod_pocztowy(self):
61
62 text_entry = self.get_code()
63 wzor = r'\d{5}'
64 wzor1 = r'\d{2}-\d{3}'
65 dopasowanie = re.search(wzor,text_entry)
66 dopasowanie1 = re.search(wzor1,text_entry)
67 if dopasowanie:
68 self.kod = dopasowanie.group()
69 self.kod = self.kod[0]+self.kod[1]+'-'+self.kod[2]+self.kod[3]+self.kod[4]
70 print(self.kod)
71 elif dopasowanie1:
72 self.kod = dopasowanie1.group()
73 print(self.kod)
74
75 if(self.kod[0] == '0'):
76 zrodlo_strony = self.doRequest(URL1)
77 elif(self.kod[0] == '1'):
78 zrodlo_strony = self.doRequest(URL2)
79 elif(self.kod[0] == '2'):
80 zrodlo_strony = self.doRequest(URL3)
81 elif(self.kod[0] == '3'):
82 zrodlo_strony = self.doRequest(URL4)
83 elif(self.kod[0] == '4'):
84 zrodlo_strony = self.doRequest(URL5)
85 elif(self.kod[0] == '5'):
86 zrodlo_strony = self.doRequest(URL6)
87 elif(self.kod[0] == '6'):
88 zrodlo_strony = self.doRequest(URL7)
89 elif(self.kod[0] == '7'):
90 zrodlo_strony = self.doRequest(URL8)
91 elif(self.kod[0] == '8'):
92 zrodlo_strony = self.doRequest(URL9)
93 elif(self.kod[0] == '9'):
94 zrodlo_strony = self.doRequest(URL10)
95 else:
96 print("zly kod pocztowy")
97
98 pattern = re.compile(self.kod+r'.+</td>')
99 lista_kodow = pattern.findall(zrodlo_strony)
100
101
102 for i in range(len(lista_kodow)):
103 lista_kodow[i] = re.sub(self.kod+r'</td><td>','',lista_kodow[i])
104
105
106
107 print(lista_kodow)
108 self.ulica = ["" for x in range(len(lista_kodow))]
109 self.miasto =["" for x in range(len(lista_kodow))]
110 self.wojewodztwo =["" for x in range(len(lista_kodow))]
111 self.powiat = ["" for x in range(len(lista_kodow))]
112 #ulica
113 for i in range(len(lista_kodow)):
114 for a in range(len(lista_kodow[i])):
115 if(lista_kodow[i][a]=='<'):
116 lista_kodow[i] = re.sub(self.ulica[i]+r'</td><td>','',lista_kodow[i])
117 break
118 self.ulica[i] = self.ulica[i] + lista_kodow[i][a]
119 #miasto
120 for i in range(len(lista_kodow)):
121 for a in range(len(lista_kodow[i])):
122 if(lista_kodow[i][a]=='<'):
123 lista_kodow[i] = re.sub(self.miasto[i]+r'</td><td>','',lista_kodow[i])
124 break
125 self.miasto[i] = self.miasto[i] + lista_kodow[i][a]
126 #wojewodztwo
127 for i in range(len(lista_kodow)):
128 for a in range(len(lista_kodow[i])):
129 if(lista_kodow[i][a]=='<'):
130 lista_kodow[i] = re.sub(self.wojewodztwo[i]+r'</td><td>','',lista_kodow[i])
131 break
132 self.wojewodztwo[i] = self.wojewodztwo[i] + lista_kodow[i][a]
133 #powiat
134 for i in range(len(lista_kodow)):
135 for a in range(len(lista_kodow[i])):
136 if(lista_kodow[i][a]=='<'):
137 break
138 self.powiat[i] = self.powiat[i] + lista_kodow[i][a]
139
140 print(self.ulica)
141 print(self.miasto)
142 print(self.wojewodztwo)
143 print(self.powiat)
144
145 #gmina
146
147 url_gmina = 'https://kod-pocztowy.info/default/searchcode?code=' + self.kod
148 zrodlo = urllib.request.urlopen(url_gmina).read().decode('utf-8')
149
150 pattern = re.compile(r'Gmina:.+</td>')
151 gminy = pattern.findall(zrodlo)
152 if(gminy[0]!= ' '):
153 gminy[0] = re.sub(r'Gmina:</td><td>','',gminy[0])
154 gminy[0] = re.sub(r'\r</td>','',gminy[0])
155 self.gmina = gminy[0]
156 print(self.gmina)
157 if(self.ulica!=' '):
158 self.dodaj_do_bazy()
159
160 def szczegoly(self):
161 self.text.delete(1.0, END)
162 if(self.kod != ' '):
163 print("szczegoly")
164 self.text.insert(END,"Dodano " + str(len(self.ulica)) + " wynikow")
165 else:
166 self.text.insert(END,"Blad")
167
168 def dodaj_do_bazy(self):
169 print('dodaje')
170 cursor = cur.execute('SELECT * FROM kody_pocztowe')
171 dodaj = 1
172 for row in cursor:
173 if(row[1]==self.kod):
174 dodaj = 0
175 break
176
177 if(dodaj==1):
178 for i in range(len(self.ulica)):
179
180 cur.execute(
181 'INSERT INTO kody_pocztowe VALUES(?,?,?,?,?,?,?)',
182 (None,self.kod,self.ulica[i],self.miasto[i],self.wojewodztwo[i],self.powiat[i],self.gmina) )
183 con.commit()
184 self.szczegoly()
185 else:
186 self.text.delete(1.0, END)
187 self.text.insert(END,"Taki kod juz wystepuje w bazie")
188
189 def wyswietl_baze(self):
190 print('wyswietl baze')
191 cursor = cur.execute(
192 'SELECT * FROM kody_pocztowe')
193 self.text1.delete(1.0, END)
194 for row in cursor:
195 self.text1.insert(END,'ID:'+ str(row[0]) +' ')
196 self.text1.insert(END,'Kod:'+row[1] + ' ')
197 self.text1.insert(END,'Ulica:'+row[2]+ ' ')
198 self.text1.insert(END,'Miasto:'+row[3]+ ' ')
199 self.text1.insert(END,'Wojewodztwo:'+row[4]+ ' ')
200 self.text1.insert(END,'Powiat:'+row[5]+ ' ')
201 self.text1.insert(END,'Gmina:'+row[6]+ ' ')
202 self.text1.insert(END,'\n')
203
204
205
206
207
208
209
210
211root = Tk()
212
213i = interfejs(root)
214root.mainloop()
215
216
217
218
219
220
221
222
223
224def main():
225
226 print("Main")
227
228if __name__ == '__main__':
229 main()