Urllib ile sayfa kaynağını çekme sorunu

urllib kütüphanesiyle okulumun sitesinin kaynağını çekmek istiyorum fakat hata alıyorum bazı youtube gibi sitelerde bir sorun yok fakat okulumun sitesinde böyle bir hata ile karşılaşıyorum
kodum;

import urllib.request

def get_page(url):
    try:
        url_open = urllib.request.urlopen(url)
        page_source = url_open.read()
        return(page_source)
    except:
        return "hata"

print(get_page("https://www.karatay.edu.tr/"))

Kodunuzu buraya göre düzenleyin. Bir de karşılaştığını hatayı da sorunuza ekleyin lütfen.

1 Beğeni

Sıkıntı okulunuzun sitesinin tasarımında, urllib ile açınca status_code olarak 500 döndürüyor. Ayrıca except bloğunu kullanma şekliniz yanlış, hatanın ne olduğunu öğrenemiyorsunuz.


Bu kod hata dahi verilse sitenin yolladığı Html’yi okuyor:

import urllib.request
from urllib.error import HTTPError

def get_page(url):
    try:
        url_open = urllib.request.urlopen(url)
        page_source = url_open.read()
        return(page_source)
    except HTTPError as e:
        return e.read()

print(get_page("https://www.karatay.edu.tr/"))

Bu hatayı alıyorum

URLError: <urlopen error [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate (_ssl.c:1056)>

İşletim sisteminiz ne?

Windows kullanıyorum.

Ben attığım kod ile hata almamıştım da, bu kodu bir deneyebilir misiniz:

import urllib.request
from urllib.error import HTTPError
import ssl

ctx = ssl.create_default_context()
ctx.check_hostname = False
ctx.verify_mode = ssl.CERT_NONE

def get_page(url):
    try:
        url_open = urllib.request.urlopen(url, context=ctx)
        page_source = url_open.read()
        return(page_source)
    except HTTPError as e:
        return e.read()

print(get_page("https://www.karatay.edu.tr"))
1 Beğeni

İşe yaradı. Çok teşekkür ederim

1 Beğeni