Python ile Vikipedi & Haber Sitelerinden Metin Kazıma

Kübra Kurt
4 min readDec 15, 2020

--

Dünyanın çevresi ilk nasıl ölçülmüş biliyor musunuz? M.Ö. 245'li yıllarda Mısır İskenderiye kütüphanesinin başında olan ve aynı zamanda multi-disipliner bir bilim adamı olan Eratosthenes, bir gün bir papirüs okuyormuş. Mısır‘ın güney kentlerinden olan Asfan’da birisi bu papirüse yengeç dönencesinde güneşin tam tepede olduğu zaman gölge boyunun sıfır olduğunu yazdığını görmüş. Bunu okuyan Eratosthenes aynı ölçümleri yapmış ama farklılık olduğunu ve gölgenin tam olarak kaybolmadığını görmüş. Parayla bir kişiyi tutmuş ve Asfan’a kadar ölçüm yapması için göndermiş. Eratosthenes elde ettiği veriler ile ilk evren modellemesini yapmış ve Dünya’nın çevresini %16.3'lük bir hata payı ile hesaplamayı başarmıştır. İşte değinmek istediğim nokta; o dönemlerde bilim için veri toplamanın zorluğu ve geldiğimiz bugünler…

Herkese merhabalar, sizlere üç başlık altında vikipedi ve haber sitelerinden nasıl kolaylıkla metin kazıyabileceğinizi anlatacağım. Sonuç olarak gerek duyduğunuz metinlere bundan sonrasında kolaylıkla erişebilecek, üzerinde istediğiniz işlemleri ve analizleri yapabileceksiniz.

İlk olarak sizlere vikipedi üzerinden çok basit bir şekilde nasıl metin kazıyacağımızdan bahsedeceğim. Ardından sadece sayfanın başlığını girerek vikipedi üzerinden nasıl Türkçe metinleri kolaylıkla elde edebileceğimizi gösterip, son olarak ise yine çok basit olarak haber siteleri içerisinden metinleri nasıl elde edebileceğimizi anlatacağım.

  1. Vikipedi Üzerinden “Wikipedia” Kütüphanesi ile Metin Kazıma

Bu başlık altında çok basit bir şekilde vikipedi üzerinden nasıl metin kazıyacağımızı göstereceğim. Bu kısımda elde ettiğimiz metinler İngilizce olacaktır. İkinci başlık altında aynı kolaylıkla nasıl Türkçe metinleri elde edebileceğimizi anlatacağım.

İlk öncelikle kütüphaneyi import ediyoruz.

İstediğimiz başlığı giriş yapabilmek için bir input oluşturuyoruz. Başlığı istediğimiz harf boyutları ile girebiliriz, sadece eksik ya da fazla karakter girişi yapmamamız gerekiyor. Burada ilk olarak wikipedia.page() modülü içerisine kazımak istediğimiz linkin başlığını olduğu gibi getirip, bunu wiki değişkenine atıyoruz. İçeriği görebilmek için de text değişkenine wiki.content modülüyle atama yapıyoruz. Direkt text değişkenini giriş yaparak çalıştırırsanız içerik fazla düzgün gözükmeyecektir. Bu sebepten dolayı print(text) modülü ile giriş yapıp çıktı alırsanız, istediğiniz sonuca ulaşacaksınız.

2. Vikipedi Üzerinden Metinleri Türkçe Kazıma

Bu başlık altında da vikipedi üzerinden metinleri nasıl bir kolaylıkla Türkçe olarak elde edebileceğimizi göstereceğim.

İlk olarak gerekli kütüphaneleri import ediyoruz.

İstediğimiz başlığı giriş yapabilmek için bir input oluşturuyoruz. Başlığı istediğimiz harf boyutları ile girebiliriz, sadece eksik ya da fazla karakter girişi yapmamamız gerekiyor. Sayfadaki metni requests.get(link) modülü ile çekiyoruz. Sonrasında BeautifulSoup(r.content, “lxml”) modülü sayfanın html kodlarını alıp lxml ile yorumlayacaktır. Ardından soup.find_all() fonksiyonu bizim belirlediğimiz özelliklere göre ilgili fonksiyonları bize verecek, etiketleri liste olarak döndürecektir. st1[0].text sayesinde de içerisinden metni ayıklarak text değişkenine atıyoruz. Son olarak print(text) şeklinde giriş yaparak istediğimiz sonucu elde edebiliyoruz. print() modülünü kullanmazsak text bize dağınık bir şekilde gelecektir.

3. Haber Sitesinden Metin Kazıma

Bu kısmı bir haber sitesi üzerinden anlatacağım fakat siz metin kazımak için gerekli işlemleri farklı siteler için de entegre edebilirsiniz.

İlk olarak gerekli kütüphaneleri import ediyoruz.

Kazıyacağımız haber metninin linkini urlopen().read() modülü ile okutup source değişkenine atıyoruz. Sonrasında linkini atadığımız source değişkenini BeautifulSoup(source.content, “lxml”) modülüne vererek sayfanın html kodlarını alıp lxml ile yorumlatıyoruz ve bunu soup değişkenine atıyoruz. Fakat soup değişkeni bize istediğimiz çıktıyı vermeyecektir. İstediğimiz unsurlara erişebilmek için print() modülü içerisine bir for döngüsü koyuyoruz.

Elde ettiğimiz bu çıktı bizi html kodları içerisinde küçük bir bulmacaya gönderecektir. Buradaki her bir faktör sayfadaki farklı bir türü temsil etmektedir. Aşağıdaki tabloda etiketlerin neleri temsil ettiklerini görebilirsiniz.

Biz sayfanın html kodlarına girerek haber metnini temsil eden faktöre ulaşacağız. Bunun için de aşağıdaki adımları izleyerek kolayca bulabiliriz.

İlk olarak siteye girerek herhangi bir yere sağ tıklayın. Ardından da çıkan menüdeki en altta bulunan incele butonuna tıklayın. Bu şekilde html kodları sayfanın sağ tarafına gelecektir.

Şimdi ilk olarak sol üst köşede kırmızı ile gösterdiğim butona tıklamanız gerekiyor.

Bu butona tıkladıktan sonra sayfada mouse ile gezindiğimiz zaman hangi faktörlerin neleri temsil ettiğini göreceğiz. İlk olarak giriş yazısını “h2” faktörünün temsil ettiğini görüyoruz.

Burada da haber metnini “p” faktörünün temsil ettiğini görüyoruz.

Şimdi “h2” ile giriş yazısını kazıyalım. Bunun için öncelikle boş bir text değişkeni oluşturmamız gerekiyor. Ardından bir for döngüsü yazıyoruz. Bu for döngüsünde paragraph ile sayfa içerisinde gezinip “h2”nin temsil ettiği giriş yazısını soup.find_all(“h2”) modülü ile bulacağız ve oluşturduğumuz boş text değişkeninin içerisine atacağız. Ardından da bunu print(text) modülü ile giriş yaparak çıktısını elde edeceğiz.

Haberin ana metnini “p” faktörünün temsil ettiğini bulduk. Bunun içinde yapmamız gereken tek şey üstteki kodlarda “h2” faktörü yerine “p” faktörünü yazmak ve kodları aynı şekilde çalıştırmak.

--

--