Merhaba! Bölümünüzün dışında ve kendi programınızda zorunlu olan dersler haricinde alabileceğiniz dersler olabiliyor. Mesela INS, END veya ISL kodlu birkaç dersi bu dönem alabileceğimi fark ettim. Bir çok insanın bilmediğini farz ediyorum ki BEB kodlu dersleri alabileceğinizi de bilmiyorsunuzdur. Alabileceğiniz ve almak zorunda olmadığınız tüm dersleri görüntülemek için Python dilinde küçük bir kod yazdım. Bu kod sayesinde ITB ve SNT kodlu derslerden çok proje yönetimi, kısa hikaye yazımı, vücut çalışma, modern fizik ve daha nice derslerden alabileceklerinizi görüntüleyebilirsiniz :
from bs4 import BeautifulSoup
import requests
import re
exclude_list=[]
html_doc = requests.get('http://www.sis.itu.edu.tr/eng/curriculums/plan/UCK/201010.html').text
soup = BeautifulSoup(html_doc,'html.parser')
for tables in soup.find_all("table",{"class":"plan"}):
for rowindex in tables.find_all('tr'):
dataindex = rowindex.find_all('td')
rows=[i.text for i in dataindex]
if rows[0] and any(index.isdigit() for index in rows[0]):
exclude_list.append(rows[0])
url = ('http://www.sis.itu.edu.tr/tr/ders_programlari/LSprogramlar/prg.php?fb=')
list = ['AKM', 'ATA', 'ALM', 'BEB', 'BED', 'BEN', 'BIL', 'BIO', 'BLG', 'BLS', 'BUS', 'CAB', 'CEV', 'CHE', 'CHZ', 'CIE', 'CIN', 'CMP', 'COM', 'DAN', 'DEN', 'DFH', 'DGH', 'DNK', 'DUI', 'EAS', 'ECO', 'ECN', 'EHA', 'EHB', 'EHN', 'EKO', 'ELE', 'ELH', 'ELK', 'ELT', 'END', 'ENE', 'ENG', 'ENR', 'ESL', 'ESM', 'ETK', 'EUT', 'FIZ', 'FRA', 'FZK', 'GED', 'GEM', 'GEO', 'GID', 'GLY', 'GMI', 'GMK', 'GSB', 'GSN', 'GUV', 'GVT', 'HUK', 'HSS', 'ICM', 'ILT', 'IML', 'ING', 'INS', 'ISE', 'ISH', 'ISL', 'ISP', 'ITA', 'ITB', 'JDF', 'JEF', 'JEO', 'JPN', 'KIM', 'KMM', 'KMP', 'KON', 'LAT', 'MAD', 'MAK', 'MAL', 'MAT', 'MEK', 'MEN', 'MET', 'MCH', 'MIM', 'MKN', 'MST', 'MTM', 'MOD', 'MRE', 'MRT', 'MTH', 'MTK', 'MTO', 'MTR', 'MUH', 'MUK', 'MUT', 'MUZ', 'NAE', 'NTH', 'PAZ', 'PEM', 'PET', 'PHE', 'PHY', 'RES', 'RUS', 'SBP', 'SEN', 'SES', 'SNT', 'SPA', 'STA', 'STI', 'TDW', 'TEB', 'TEK', 'TEL', 'TER', 'TES', 'THO', 'TRZ', 'TUR', 'UCK', 'ULP', 'UZB', 'YTO']
url_new = [url + s for s in list]
for i in range(0,len(url_new)):
html_doc = requests.get(url_new[i]).text
soup = BeautifulSoup(html_doc, "lxml")
table = soup.find('table',{"class":"dersprg"})
table_rows = table.find_all('tr')
for tr in table_rows:
td = tr.find_all('td')
row = [i.text for i in td]
if re.compile(r'\b({})\b'.format('UCK')).search(row[11]) and not any(excludecourse in row[1] for excludecourse in exclude_list):
exclude_list.append(row[1])
print('{:<5} {:<9} {:<35} Ders Kataloğu: {:<66} Kapasite: {:>3}/{:<3}'.format(row[0], row[1], row[2], td[1].find('a').get('href'), row[9], row[8]))
Örnek resimden de anlayacağınız gibi aynı dersi birden fazla göstermiyor ve ders planları bölümünde zorunlu olarak belirtilmiş dersleri seçmiyor. Bunun haricinde dil derslerini göz ardı ediyor.
Kendiniz için düzenlemek için alttan üçüncü satırdaki UCK kodunu kendi bölümünüz ile değiştirin ve urlleri kendi sayfanıza ait olanlarla, tercihen İngilizce versiyonları, değiştirin. ITB ve SNT derslerini görmek istemiyorsanız şu kodu Url ile Url_new arasında müsait gördüğünüz bir yere yerleştirin veya List'ten ITB ve SNT elemanlarını silin:
exclude_list.append('ITB'), exclude_list.append('SNT')
Tüm kodların çalışması neredeyse bir dakika sürüyor. Kendi programınızı oluşturmak için: ITU Scheduler.