Python Script'i ile Html Kayıtlarından Csv Ayıklamak

metatronslove

Yeni Üye
Katılım
30 Aralık 2023
Mesajlar
7
Ç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.


extractnamestocsv.py:
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
 
  • Beğen
Reactions: nt

Forum istatistikleri

Konular
5,844
Mesajlar
99,702
Üyeler
2,481
Son üye
rfdog12

Son kaynaklar

Son profil mesajları

gruptaki arkadaşlara selamlar. sıteyi bu gün fark ettim. Asansör için 2x7 segment LCD gösterge üretmek istiyorum. acaba bu sayfadaki arkadaşlardan destek alabilirmiyim. LCD nin mantık açılımı ektedir.
deneyci wrote on TA3UIS's profile.
Selam.
Amatör telsiz lisansı nasıl alınıyor?
Lisansı olmayanı forumlarına almıyorlar. :)
Bilgi alamıyoruz.
cemalettin keçeci wrote on HaydarBaris's profile.
barış kardeşim bende bu sene akıllı denizaltı projesine girdim ve sensörleri arastırıyorum tam olarak hangi sensör ve markaları kullandınız yardımcı olabilir misin?
m.white wrote on Altair's profile.
İyi akşamlar.Arabanız ne marka ve sorunu nedir.Ben araba tamircisi değilim ama tamirden anlarım.
* En mühim ve feyizli vazifelerimiz millî eğitim işleridir. Millî eğitim işlerinde mutlaka muzaffer olmak lâzımdır. Bir milletin hakikî kurtuluşu ancak bu suretle olur. (1922)
Back
Top