Python ile Web Sitesinden Veri Çekme

Merhabalar, * İstanbul Voleybol İl Temsilciliği * adresinde yer alan Kurum adı listesini python ile çekmek istiyorum. Kodu aşağıdaki şekilde oluşturdum. Çalıştırdığımda -Seçiniz- şeklinde sonuç çıkıyor. Benim Kurum adı tablosunun listesini çekmem lazım. Bunu nasıl yapabilirim? Teşekkürler.

import requests
from bs4 import BeautifulSoup

Site URL’si

url = “* İstanbul Voleybol İl Temsilciliği *

İlk GET isteği ile formu almak

response = requests.get(url)
soup = BeautifulSoup(response.content, ‘html.parser’)

Hidden input ve diğer gerekli verileri formdan alıyoruz

viewstate = soup.find(‘input’, {‘name’: ‘__VIEWSTATE’})[‘value’]
viewstategenerator = soup.find(‘input’, {‘name’: ‘__VIEWSTATEGENERATOR’})[‘value’]

POST verileri

payload = {
‘__VIEWSTATE’: viewstate,
‘__VIEWSTATEGENERATOR’: viewstategenerator,
‘__EVENTTARGET’: ‘’,
‘__EVENTARGUMENT’: ‘’,
‘ctl00$icerik$ddlsil’: ‘34’, # İli İstanbul (34)
‘ctl00$icerik$ddlsezon’: ‘2023-2024’, # Sezon 2023-2024
‘ctl00$icerik$txtTarih’: ‘01.01.2023’, # Başlangıç Tarihi
‘ctl00$icerik$ddlsbe’: ‘K’, # B & E alanında Kadın (K)
# Diğer form verileri burada eklenebilir
}

POST isteği gönderiyoruz

post_response = requests.post(url, data=payload)
post_soup = BeautifulSoup(post_response.content, ‘html.parser’)

Yanıtın içeriğini kontrol etmek

with open(‘post_response.html’, ‘w’, encoding=‘utf-8’) as f:
f.write(post_soup.prettify())

Güncellenen kurum adı listesini almak

kurum_select = post_soup.find(‘select’, {‘name’: ‘ctl00$icerik$ddlskurumadi’})
if kurum_select:
kurum_listesi = kurum_select.find_all(‘option’)

# Sonuçları ekrana yazdırmak
for kurum in kurum_listesi:
    print(kurum.text)

else:
print(“Kurum adı listesi bulunamadı.”)

Siteye biraz baktığımda kurumadı alanı her seferinde aynı yöntemle dolmuyor. Ya da bende bi bozukluk var. Mesela browserdan attığım ve dolu gelen requesti postmanle attığımda kurumadları boş geliyor.

Burada hangi requestle kesin olarak dolduğunu bulup o requesti attıktan sonra kurum adlarını çekmeye çalışmak mantıklı olacaktır.

Örneğin şu requesttin sonucu bende browserda kurumadını doldurdu. Ancak postmanle aynı istek doldurmadı.

ctl00%24icerik%24GuestFiksturlerScr=ctl00%24icerik%24UpdatePanel%7Cctl00%24icerik%24ddlsbe&TSM_HiddenField=ZaMfZ6yYhPPHZ1NeEf8j6-t902-6pHpn2MehV0eep-I1&ctl00%24mail=&ctl00%24password=&ctl00%24icerik%24txtmemberuser=&ctl00%24icerik%24txtkayitid=&ctl00%24icerik%24txtpageno=&ctl00%24icerik%24txtilid=34&ctl00%24icerik%24txtyetkiseviyesi=&ctl00%24icerik%24txtgun=&ctl00%24icerik%24txtmacide=&ctl00%24icerik%24txtyil=&ctl00%24icerik%24pageno=&ctl00%24icerik%24ddlSil=34&ctl00%24icerik%24ddlsezon=10&ctl00%24icerik%24txttarih=01.08.2024&ctl00%24icerik%24txtbitistrh=31.08.2024&ctl00%24icerik%24ddlsbe=0&ctl00%24icerik%24ddlskategori=BYK&ctl00%24icerik%24ddlskume=0&ctl00%24icerik%24ddlsturu=0&ctl00%24icerik%24ddlsgrubu=0&ctl00%24icerik%24ddlskurumadi=0&ctl00%24icerik%24ddlstakim=0&ctl00%24icerik%24ddlsyarismaadi=0&
__EVENTTARGET=ctl00%24icerik%24ddlsbe&
__EVENTARGUMENT=&
__LASTFOCUS=&
__VIEWSTATE=&
__VIEWSTATEGENERATOR=4EA132F3&
__VIEWSTATEENCRYPTED=&
__ASYNCPOST=true&