Etik Yöntemlerle Web Kazıma — Python ile robots.txt Dosyasını Okumak ve URL İzni Kontrol Etmek

Mehmet Ali Özer
KaVe
Published in
3 min readFeb 1, 2020

--

Geçtiğimiz hafta Karmaşık Sistemler ve Veri Bilimi Topluluğu’ndaki eğitimimizde Ph. D. Cansu Canca @AIEthicsLab bize yapay zeka etiği konusunda bilgilendirici ve düşündürücü bir sunum yaptı.
Ardından Samet Atdağ @prisyncCom web kazıma yöntemlerinde geldikleri seviyeyi ve bu yöntemleri kullanırken hassas oldukları noktalardan bahsetti. Bu etkileyici haftanın ardından web kazıma yöntemlerini etik açıdan doğru yapabimek adına eğitimde bahsi geçen hassas noktalardan biri olan robots.txt dosyasının ne olduğunu ve web sitelerinin bu sayfasını nasıl okuyacağınızı python üzerinde uygulamalı olarak göstermek istedim.

Geçtiğimiz yıllarda verilerin gizliliği, verilerin korunması ve veri sahibinin hakları konusunda dünya çapında konuşmalar yapıldı ve fikirler geliştirilmeye başlandı, hukuki düzenlemeler yapıldı, Kişisel Verilerin Korunması Kanunu (KVKK) ciddi anlamda ele alındı ve birçok konuda tartışmalar hala devam etmekte.

Peki web sayfalarından verileri almak istiyorsanız, web kazıma yöntemlerinizi kullanmadan önce nasıl bir yol izleyebilirsiniz?

Öncelikle web sayfalarını, şahısların / şirketlerin mülkleri olarak düşünebilirsiniz. Öyle ki bu sayfalara girdiğinizde sayfaların halka açık (public) bilgiler içeriyor olması bunları toplama hakkınız olduğu anlamına gelemeyebiliyor. Burada dikkat edilebilecek hususlardan en basiti, web sayfası sahiplerinin izlenilmesini istemediği sayfalar için protokol olarak belirttiği robots.txt dosyasındaki bilgilere dikkat edilmesidir.

robots.txt dosyası web sitesi sahiplerine; otomatize edilmiş web gezinme araçlarına, web örümcek ve robotlarına karşı bir Robot Dışlama Protokolü (The Robots Exclusion Protocol) tanımlamalarını sağlar. Bu yolla size açık bir şekilde bu sayfalarda robot uygulama (web scrapping & crawling) yöntemlerinizi kullanmamanızı belirtmiş olurlar.

robots.txt Dosyasının Yapısı

Bu dosyanın yapısını biraz inceleyelim, burada işleyişe örnek olarak amazon.com.tr adresini düşünelim. Robot yazılım bu sayfayı ziyaret etmeden önce https://www.amazon.com.tr/robots.txt adresini kontrol ediyor ve buradaki kendisini kapsayan Robot Dışlama Politikalarına göre aksiyon alıyor.

User-agent: *
Disallow: /dp/product-availability/
Disallow: /dp/rate-this-item/
Disallow: /exec/obidos/account-access-login
Disallow: /exec/obidos/change-style
Disallow: /exec/obidos/dt/assoc/handle-buy-box
Disallow: /exec/obidos/flex-sign-in
Disallow: /exec/obidos/handle-buy-box
Disallow: /exec/obidos/refer-a-friend-login
... #buralarda başka adresler mevcut, tam listeyi almadan daralttım.
... #buralarda başka adresler mevcut, tam listeyi almadan daralttım.

User-agent: * “ kısmı bütün robotların kapsandığını ifade ediyor.
“ Disallow: /adres “ kısımları ise robotların dışlandığı dosyaların adreslerini gösteriyor.

Diğer kullanım örnekleri olarak şunları görebilirdik;

Yandex için bütün sayfaya erişimi bloklayan robots.txt protokolü.

User-agent: Yandex
Disallow: /
# blocks access to the entire site

Googlebot için https://www.sahibinden.com/robots.txt adresindeki kısıtlamaların bir kısmını örnek olması amacıyla aşağıdaki gibi gösterebilirim.

User-agent: Googlebot
... #buralarda başka adresler mevcut, tam listeyi almadan daralttım.
Disallow: /ilan/*/pasif-ilan
Disallow: /ilan/*/silinmis-ilan
... #buralarda başka adresler mevcut, tam listeyi almadan daralttım.
Disallow: /en/aff.php*
Disallow: /aff.php*
Disallow: /search_result.php*
Disallow: /ajax*
Allow: /ajax/category/homepageCategories?*
Allow: /ajax/m/device/bannerInfo
Disallow: /view_*
Disallow: /arama_*
Disallow: /ilan_*
Disallow: /vasita-karsilastir*
Disallow: /arama/flt/*
Disallow: *?gclid=*
Disallow: *&gclid=*
... #buralarda başka adresler mevcut, tam listeyi almadan daralttım.

Bu dosya hakkında daha detaylı bilgi edinmek için resmi sayfasındaki dökümanları ziyaret edebilirsiniz.

Python Uygulaması

Python programlama dili ile sadece kendi built-in fonksiyonlarını kullanarak basitçe robots.txt dosyasını nasıl okuyabileceğimizi ve URL izni sorgulayabileceğimizi görelim. Kodlama örneğimizde ise hepsiburada.com için yazılmış robots.txt dosyasına ulaşalım. https://www.hepsiburada.com/robots.txt

Referanslar ve Github Repository

--

--