Sana şunu sorayım.
Eğer bir web sitesi sahibi olsaydınız.
İnsanların web sitenizi kazımasını ister miydiniz?
İnsanların verilerinize, belki de Airbnb'nize erişmesini ister miydiniz ve bu ürünleri listelemek için gerçekten çok çalıştınız.
Burada farklı bilgiler var.
Herhangi birinin gelip bu bilgileri alabilmesi ve belki de web sitenizin bir kopyasını oluşturabilmesi adil mi?
Pek sayılmaz.
Doğru.
Yani, duruma göre değişir.
Çoğu zaman, insanların web sitelerinizi kazımasını gerçekten istemezsiniz.
HTML ve bir web sitesinin verileri hepimiz için mevcut olsa da, insanların farklı web sayfalarını görebilmesi için internetimizin
çalışma şekli budur.
Çoğu web sitesi, verilerini kazımanızı gerçekten istemez.
Artık web sitelerinin size neyi kazıyıp neyi kazıyamayacağınızı söylemesinin bir yolu var.
Adı Robotlar Nokta Metin.
Basitçe bir URL eğik çizgisinin sonunda diyoruz.
Robots nokta txt.
Eğer enter'a tıklarsam.
Şuna bak.
Airbnb'nin robotları var. txt.
Robotlar. txt basitçe diyor ki, hey, eğer bir robotsanız, eğer bir web kazıyıcısıysanız veya bir örümcekseniz.
İşte bu yüzden yapmanıza izin veriliyor ve verilmiyor.
Bu, kuralları çiğnediğimiz takdirde bizi engelleyecekleri anlamına mı geliyor?
Hayır, bizi gerçekten engelleyemezler.
Ancak bu, burada etik olmak ve yalnızca bir web sitesinin size izin verdiği verileri kazımak istediğiniz gri bir alandır.
Yani robotlara bakarsak. txt, burada Airbnb'nin bize neleri kazıyıp neleri kazıyamayacağınızı söyleyen bir
vergi dosyası oluşturduğunu görüyorsunuz.
Örneğin, Googlebot Airbnb'nin Hey Googlebot, bu bilgileri kazımana izin var, ancak hesap mezunlarının
takvimini kazımana izin vermiyoruz dediğini söyleyen kullanıcı aracısına bakıyoruz ve izin verilmeyen pek
çok şey olduğunu görüyorsunuz.
Peki ya Bing arama botu?
Bing, bunu yapmaya iznin var ama yapamazsın.
Bu verilerden herhangi birini kazıyın.
Elimizde Yandex.
Başka neyimiz var?
Elimizde Baidu Spider var.
Bir de Kullanıcı Temsilcisi Starr var.
Yani başka biri, başka biri?
Bunu kazıma izniniz var, ancak bu bilgilerin hiçbirini kazıma izniniz yok.
Pekala, başka bir tanesine geçelim.
Udemy Dotcom'a gidelim.
Burada, hiç kimsenin bu bilgilerin herhangi birini kazımanızı veya taramanızı istemediğimizi görüyoruz,
ancak buna erişmenize izin veriyoruz.
API 2. 0, tabii ki, borç verme bileşenleri.
Pekala, bu çok kötü.
Görünüşe göre Udemy bu API 2'den başka bir şey yapmamıza gerçekten izin vermiyor. 0 şey, ki buna geri döneceğiz.
Peki ya Hacker News?
Hacker News etrafında bir proje oluşturacağız.
Bakalım Hacker News bunu kazımamıza izin verecek mi?
Tamam.
Yani bu liste biraz daha küçük.
Bunu tüm kullanıcılar için görüyoruz.
Bu uç noktaları kullanmamıza izin verilmiyor.
Yani bunları, bu URL'leri kullanmadığınız sürece sorun yok diyor.
Yani, sadece ana sayfayı kazımak istersek.
Tam burada.
Sorun değil.
Diyelim ki yorumlara gitmeye çalışıyorsak.
Bu da iyi, çünkü bu robot metninde yoktu.
Yine hatırlarsanız, robotlar metnine gidersek.
Sorun değil.
İstedikleri tek şey, 30'luk bir tarama gecikmesine sahip olmamız.
Yani, Web sitelerini tarayacaksak, bir duraklamamız olmalı, böylece web sitesine girmek için sürekli programlar
kullanmamalıyız çünkü bu, sunucularına aşırı yüklenecek ve belki de web sitelerini yavaşlatacaktır.
Peki ne öğreniyoruz?
Web sitelerini kazımanın etik ve etik olmayan yolları olduğunu öğreniyoruz.
Evet, istediğiniz herhangi bir web sitesini kazıyabilirsiniz.
Ve aslına bakarsanız, krom eklentileri var.
Google Chrome'a Web kazıyıcı eklerseniz, tek bir satır kod bile yazmadan web sitelerini
kazımanıza olanak tanıyan kullanabileceğiniz bir ton Web kazıyıcı vardır.
Etik programlama yapmak iyi bir şeydir ve bu, bir web sitesini kazımadan önce şartlarını ve koşullarını kontrol etmek, robotları
kontrol etmek anlamına gelir. Neyi kazıyıp kazıyamayacağınızı görmek için txt.
Çünkü genellikle bir web sitesinden topladığınız veriler ticari amaçlarla kullanılmamalıdır,
çünkü başkasının emeğini belki de para kazanmak için kullanıyorsunuzdur.
İşte bu yüzden Hacker News'e gidip 30 saniyelik acımasız bir gecikme istedik.
Doğru.
Programınızla agresif bir şekilde bir web sitesinden veri talep ediyorsanız, bu aslında
spam yapmaktır çünkü bu Hacker News'i kırabilir.
Şimdi, web kazıma konusuna girmeden önce bir şeyi daha belirtmek istiyorum, o da API
fikri.
Udemy Robots'a eriştiğimiz zamanı hatırlarsanız. txt, bize kazıyabileceğimiz bazı izin verilen alanlar veya kullanabileceğimiz
uç noktalar olduğunu söylediler.
Bazı web sitelerinin aslında verilere erişmenize izin verdiğini görüyorsunuz.
Örneğin, Udemy bize bir eğitmen API'si veriyor.
Yani, Udemy'de bir eğitmenseniz, API'lerini gerçekten kullanabilirsiniz.
Farklı veriler elde edebilmeniz için burada görebilirsiniz.
Belki bir kurs inceleme listesi, belki bir kurs soruları listesi alabilirsiniz.
Ancak buraya gider ve URL'me bunu girersem, geçersiz bir eksik belirteç alırım.
Çünkü şu anda bir eğitmen değilim ya da en azından bir eğitmen olduğumu doğrulamadım.
Udemy'de şöyle diyecektir: Hey, bu veriler yalnızca geçerli eğitmenler içindir, bu nedenle Udemy'de eğitmen olduğumu
kanıtlamak için ona bir belirteç iletmem gerekiyor.
Ve birçok web sitesi size API veya uygulama programlama arayüzü erişimi dediğimiz şeyi verir.
JSON adı verilen bu tür bir formda, size ihtiyacınız olan verileri verir ve bazı web siteleri yalnızca geçerli bir kullanıcıysanız
bunu yapmanıza izin verir.
Örneğin, en popüler API'lerden biri GitHub'dan farklı bilgilere erişebileceğiniz bu GitHub API'sidir.
Ancak bunu kullanabilmemiz için bir kullanıcı hesabı oluşturmamız ve söylediğimiz kişi olduğumuzu doğrulamamız
gerekiyor.
Ancak Star Wars API gibi bize ücretsiz erişim sağlayan web siteleri de var.
Yani, herkes kullanabilir.
Kullanıcı olduğumuzu doğrulamamıza gerek yok.
Bir talepte bulunurken bir belirteç vermek zorunda değiliz.
Bunun yerine, sadece veri talep edebiliriz.
Örneğin, takas API'sini kullanırsam ve people yazıp enter tuşuna basarsam.
Şuna bir bak.
Tüm bu verileri ücretsiz olarak alıyorum, böylece bu kadar mutlu olan Star Wars etrafında bir uygulama oluşturabiliyorum.
Star Wars API'si anlamına geliyor ve istediğimiz tüm bu bilgileri alabiliyoruz.
Ayrıca, fotoğraflar gibi farklı bilgiler alabileceğimiz basit projeler oluştururken kullanmayı
gerçekten sevdiğim JSON yer tutucusu gibi şeylerimiz de var.
Burada bunun bize bilgi veren bir API olduğunu görebilirsiniz.
Kullanabileceğimiz farklı fotoğraflarla.
Belki kullanabileceğimiz farklı görevlerimiz vardır.
Ve yine, bunlar JSON formatında dediğimiz şeydir, HTML değildir, ancak insanların kullanabilmesi için verilerin temizlenmiş
bir sürümüdür.
Bir web sitesinden veri almanın en kolay yolu genellikle bir API kullanmaktır.
Bazen web siteleri sadece kolayca erişmemize izin verir veya bir API'leri olabilir, ancak yalnızca belirli kullanıcılarla
sınırlıdır.
Belki de servislerine kayıt olmanız gerekiyordur.
Belki de API'leri için ödeme yapmanız gerekiyordur.
O zaman elimizde bu var.
Ama bir de web kazıma var, yani bir web sitesi size bir API'ye erişim vermiyor olabilir.
Belki de sadece bu bilgiye sahip olmak istersiniz.
Örneğin, Hacker News bildiğim kadarıyla bir API sunmuyor.
Bunun yerine HTML'yi, tüm web sitesini kazımak ve ne kullanabileceğimize bakmak isteyebiliriz.
Peki Python kullanarak bir web sitesini nasıl kazıyabiliriz?
Bir sonraki videoda öğrenelim.