metatronslove
Yeni Üye
- Katılım
- 30 Aralık 2023
- Mesajlar
- 9
Çok kısa bir süre içinde 2024 yerel seçimleri yapılacak, internette pek çok adres kayıt veri tabanları bulmak mümkün fakat herkesin kullanmadığı bir günceyi, bir listeyi, kayıt silsilesini incelemek ve üzerinde çalışmak istediğimizde ne olacak ? Kayıtlar web sayfalarında okunabiliyor fakat .sql, .db, .xls, .ods, .json veya .csv formatında değiller; listenin uzunluğuna göre copy, paste yapmak doğrudan tablolama programına yapılabilecek şekilde ayraçlar (tab karakteri gibi) mevcutsa bile insan hatasından kaynaklanabilecek aktarma kusurlarına yol açabilir. Python scriptler kullanarak; web sayfalarından veri ayıklamak bu iş için pek çok kodlayıcının kullandığı bir yol ve ben de iki kez bunu yapmayı denedim ve oldukça hoşuma gitti. İlerleyen zamanla belki yapay zeka daha da ehlileştirildikçe bu ayıklama operasyonları içinde bazı kolaylıkları arttırabilir, bilemiyorum.
python3 extractnamestocsv.py
ile kodu çalıştırdığımız zaman Wikipedia sitesinden il ve ilçe isimlerini ayıklayarak ilçeisimleri2024.csv isimli listeye kaydediyor. Excel gibi tablolama programları bu formatı doğrudan tablolarına girdi olarak alabiliyor. Mantığını kavrayınca her hangi bir data için uyarlamak çok çok kolay.
Html kayıtlarından veri ayıklamak - Github
Kod:
import urllib.request
import codecs
import sys
import time
start = time.time()
sys.stdin.reconfigure(encoding='UTF-8')
sys.stdout.reconfigure(encoding='UTF-8')
dosya=codecs.open('ilçeisimleri2024.csv', 'w', 'UTF-8')
dosya.write('Kayıt, Şehir No, Şehir, İlçe No, İlçe\n')
site = 'https://tr.wikipedia.org/wiki/T%C3%BCrkiye%27nin_il%C3%A7eleri'
temp = urllib.request.urlopen(site)
print('\n\r\033[1m' + site + '\033[0m adresinden isimler yolunuyor :')
page = temp.read().decode('UTF-8')
cities = 1
expectedentry = 973
numberofcities = totaloftowns = 0
while cities == 1:
cityname = page.find('<span class="mw-headline"')
if cityname != -1:
numberofcities += 1
bas=page.find('">', cityname)
son=page.find('</span>', bas)
nameofacity=page[bas+2:son]
townsofcity = 0
page = page[son:]
towns = 1
while towns == 1:
townsofcity += 1
totaloftowns += 1
percentage = 100*totaloftowns/expectedentry
townname = page.find('<li><a href')
if townname != -1:
bas=page.find('">', townname)
son=page.find('</a></li>', bas)
lnk=page.find('</a>', bas)
ctr=page.find('</a> (İl merkezi)</li>', bas)
chk=page.find('</a></li></ul>', bas)
if lnk == ctr:
nameofatown=page[bas+2:lnk]
else:
nameofatown=page[bas+2:son]
if son == chk:
towns = 0
page = page[lnk:]
if nameofacity != 'İsimlerine göre ilçeler ve nüfusları':
total = '0'*len(str(expectedentry)) + str(totaloftowns)
recordline = str(totaloftowns) + ',' + str(numberofcities) + ',' + nameofacity + ',' + str(townsofcity) + ',' + nameofatown + '\n'
linetoview = '\033[92m' + total[-1*len(str(expectedentry)):] + ' ► %' + str(percentage)[:5] + ' tamamlandı ► \033[0m' + nameofacity + " ilinin " + nameofatown + ' ilçesi eklendi. '
dosya.write(recordline)
print(linetoview, sep='',end =' '*19+'\b'*len(linetoview)+'\b'*19, file = sys.stdout , flush = True)
else:
cities = 0
dosya.close()
end = time.time()
print(linetoview, sep='',end ='\b\b \033[92m►\033[0m \033[1m\'ilçeisimleri2024.csv\'\033[0m dosyasına kaydedildi \033[92m►\033[0m ' + str(end - start)[:5] + ' saniyede sonlandı\n\r\n\r', file = sys.stdout , flush = True)
python3 extractnamestocsv.py
ile kodu çalıştırdığımız zaman Wikipedia sitesinden il ve ilçe isimlerini ayıklayarak ilçeisimleri2024.csv isimli listeye kaydediyor. Excel gibi tablolama programları bu formatı doğrudan tablolarına girdi olarak alabiliyor. Mantığını kavrayınca her hangi bir data için uyarlamak çok çok kolay.
Html kayıtlarından veri ayıklamak - Github