Untitled
unknown
plain_text
2 years ago
5.5 kB
39
Indexable
import sys
import requests
from bs4 import BeautifulSoup
import pandas as pd
from PyQt5.QtWidgets import QApplication, QWidget, QLabel, QLineEdit, QPushButton, QTextBrowser, QVBoxLayout, QSizePolicy
from PyQt5.QtGui import QFont, QIcon
from PyQt5.QtCore import QUrl
from PyQt5.QtGui import QDesktopServices
favicon_path = 'C:/Users/mahmu/OneDrive/Masaüstü/BasarıSıralamaları/medicon.ico'
app = QApplication(sys.argv)
app.setWindowIcon(QIcon(favicon_path))
# İlk kod bloğu: Verileri web sitesinden al ve Excel'e kaydet
url = 'https://www.tercihsiralamalari.com/bolum/tip'
response = requests.get(url)
if response.status_code == 200:
# Sayfanın kaynak kodu
page_content = response.text
# Beautiful Soup ile sayfanın içeriğini analiz et
soup = BeautifulSoup(page_content, 'html.parser')
# tbody'yi bulun
tbody = soup.find('tbody')
# tbody içindeki her bir tr'yi bulun
rows = tbody.find_all('tr')
# Verileri bir veri çerçevesine (DataFrame) ekleyin
data = []
for row in rows:
cells = row.find_all(['th', 'td'])
row_data = [cell.get_text(strip=True) for cell in cells]
data.append(row_data)
# Veri çerçevesini oluşturun
df = pd.DataFrame(data, columns=['Üniversite Adı', 'Bölüm', 'Puan Türü', 'Kontenjan', 'Yerleştirme Puanı', 'Başarı Sırası'])
# Veriyi Excel dosyasına kaydedin
df.to_excel('Sıralamalar.xlsx', index=False)
class SiralamaUygulamasi(QWidget):
def __init__(self):
super().__init__()
self.initUI()
def initUI(self):
self.setWindowTitle('Sıralama Bazlı Tercih Sonuç Uygulaması')
self.setMinimumWidth(400)
self.setMinimumHeight(400)
font = QFont()
font.setPointSize(13)
self.calculate_button = QPushButton('Sıralamanı Hesapla')
self.calculate_button.setFont(font)
self.calculate_button.clicked.connect(self.open_calculation_website)
self.label = QLabel('Lütfen bir değer girin:')
self.label.setFont(font)
self.textbox = QLineEdit(self)
self.textbox.setFont(font)
self.textbox.setPlaceholderText('Örn. 21.482 olarak yazınız.') # Placeholder ekleme
self.textbox.returnPressed.connect(self.show_rankings) # Enter tuşuna basıldığında show_rankings fonksiyonunu çağır
self.show_results_button = QPushButton('Sonuçları Göster')
self.show_results_button.setFont(font)
self.show_results_button.clicked.connect(self.show_rankings)
self.result_label = QTextBrowser()
self.result_label.setFont(font)
self.result_label.setReadOnly(True)
self.result_label.setSizePolicy(QSizePolicy.Expanding, QSizePolicy.Expanding)
self.layout = QVBoxLayout()
self.layout.addWidget(self.calculate_button)
self.layout.addWidget(self.label)
self.layout.addWidget(self.textbox)
self.layout.addWidget(self.show_results_button)
self.layout.addWidget(self.result_label)
self.setLayout(self.layout)
def open_calculation_website(self):
# Web sayfasını açmak için QDesktopServices kullanılır
url = QUrl('https://ertansinansahin.com/yks-tyt-ayt-puan-hesaplama-ve-siralama-hesaplama/')
QDesktopServices.openUrl(url)
def show_rankings(self):
girilen_deger_str = self.textbox.text()
if ',' in girilen_deger_str:
girilen_deger_str = girilen_deger_str.replace(',', '.')
try:
girilen_deger = float(girilen_deger_str)
except ValueError:
girilen_deger = None
excel_verileri = pd.read_excel('Sıralamalar.xlsx')
excel_verileri = excel_verileri.sort_values(by='Başarı Sırası')
en_yakin_deger = float('inf')
for deger_str in excel_verileri['Başarı Sırası']:
try:
deger = float(deger_str)
except ValueError:
continue
if girilen_deger is not None and girilen_deger <= deger:
en_yakin_deger = deger
break
universiteler = []
for i, deger_str in enumerate(excel_verileri['Başarı Sırası']):
try:
deger = float(deger_str)
except ValueError:
continue
if deger >= en_yakin_deger:
universite_adi = excel_verileri.loc[i, 'Üniversite Adı']
bolum = excel_verileri.loc[i, 'Bölüm']
basari_sirasi = deger
universiteler.append((universite_adi, bolum, basari_sirasi))
if universiteler:
sonuc = f"YERLEŞEBİLECEĞİNİZ ÜNİVERSİTELER:\n <br> <br>"
for universite_adi, bolum, basari_sirasi in universiteler:
sonuc += f"<b style='color:purple;'>Üniversite Adı:</b> {universite_adi}<br>"
sonuc += f"<b style='color:purple;'>Bölüm:</b> {bolum}<br>"
sonuc += f"<b style='color:purple;'>Başarı Sıralaması:</b> {basari_sirasi}<br><br>"
self.result_label.setHtml(sonuc)
else:
self.result_label.setText("Üzgünüz! Herhangi bir yere yerleştirilemediniz.")
def main():
app = QApplication(sys.argv)
uygulama = SiralamaUygulamasi()
uygulama.show()
sys.exit(app.exec_())
if __name__ == '__main__':
main()
Editor is loading...