Pandas - read_html

read_html() Fonksiyonu Nedir? Nasıl Kullanılır?

read_html() fonksiyonu ile web sitelerinde ya da htm/html uzantılı dosyalardaki tabloları, çalışmalarınıza dahil edebilirsiniz. Öncelikle veri almak istediğimiz sayfanın içerisinde kaç adet tablo olduğunu bulalım.

url_tablo = pd.read_html("https://tr.wikipedia.org/wiki/Van")
print(f"Sayfada bulunan toplam tablo sayısı: {len(url_tablo)}")
Sayfada bulunan toplam tablo sayısı: 11

match Parametresi

Hangi tabloyu kullanmak (içe aktarmak) istiyorsak öncelikle o tabloyu, tam olarak belirtmemiz/tanımlamamız gerekiyor. Bunu da read_html() fonksiyonunun match (eşle) parametresi ile yapmamız gerekir. Benim kullanmak istediğim tablonun içerisinde Van il nüfus bilgileri ibaresi bulunduğu için ben bu "kelime grubunu" match parametresine dahil ediyorum.

url_tablo = pd.read_html("https://tr.wikipedia.org/wiki/Van", match="Van il nüfus bilgileri")
len(url_tablo)
1

Bu demek oluyor ki, sayfa içeriğinde, Van il nüfus bilgileri ibaresi bulunan 1 adet eşleşmiş tablo var, artık url değişkeni sayfadaki tek tabloyu temsil ediyor ve bu tabloya erişmek için ilk indis olan 0 sıfır'ı kullanmamız gerekir.

print(url_tablo[0])

Van il nüfus bilgileri

Yıl Toplam Sıra Fark Şehir - Kır
0 1965[11] 266.840 48 NaN %23 60.686206.154 %77
1 1970[12] 325.763 43 %22 %27 88.227237.536 %73
2 1975[13] 386.314 42 %19 %30 115.830270.484 %70
3 1980[14] 468.646 39 %21 %33 156.852311.794 %67
4 1985[15] 547.216 35 %17 %35 189.269357.947 %65
5 1990[16] 637.433 32 %16 %41 258.967378.466 %59
6 2000[17] 877.524 23 %38 %51 446.976430.548 %49
7 2007[18] 979.671 19 %12 %52 511.678467.993 %48
8 2008[19] 1.004.369 19 %3 %51 514.481489.888 %49
9 2009[20] 1.022.310 19 %2 %52 527.525494.785 %48
10 2010[21] 1.035.418 19 %1 %52 539.619495.799 %48
11 2011[22] 1.022.532 19 -%1 %52 526.725495.807 %48
12 2012[23] 1.051.975 19 %3 %52 548.717503.258 %48
13 2013[24] 1.070.113 19 %2 Şehir ve kır ayrımı kaldırılmıştır.
14 2014[25] 1.085.542 19 %1 Şehir ve kır ayrımı kaldırılmıştır.
15 2015[26] 1.096.397 19 %1 Şehir ve kır ayrımı kaldırılmıştır.
16 2016[26] 1.100.190 19 %0 Şehir ve kır ayrımı kaldırılmıştır.
17 2017[26] 1.106.891 19 %1 Şehir ve kır ayrımı kaldırılmıştır.
18 2018[26] 1.123.784 19 %2 Şehir ve kır ayrımı kaldırılmıştır.
19 2019[26] 1.136.757 19 %1 Şehir ve kır ayrımı kaldırılmıştır.
20 2020[26] 1.149.342 19 %1 Şehir ve kır ayrımı kaldırılmıştır.
21 2021[26] 1.141.015 19 -%1 NaN

len(url_tablo) çıktısı 1'den büyük, yani sayfada aranan kelime ile eşleşen 1'den fazla tablo olsaydı, o durumda url_tablo[0] kodundaki indis değerini değiştirerek istediğimiz tabloya erişebilecektik. Örneğin; url_tablo[3]
Aşağıdaki kodu çalıştırırsanız, ilgili sayfada ilçe ibaresi geçen 5 adet tablo bulunduğunu göreceksiniz.

url_tablo = pd.read_html("https://tr.wikipedia.org/wiki/Ankara", match="İlçe")
len(url_tablo)

Bu tablolardan üçüncü tabloya ulaşmak için print(url_tablo[2]) komutunu çalıştırmanız gerekecektir (indis değeri 0'dan başladığı için 3 yerine 2 yazmalıyız).