Untitled
unknown
plain_text
a year ago
5.5 kB
34
Indexable
Never
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()