Bu yazıda php basit bir bot yapımı konusuna değinmek istedim. Üç farklı yöntem ile aynı verilerin nasıl çekilip, düzenleneceğini anlattım. İlk olarak curl ve file_get_contents fonksiyonu yardımı ile hedef siteden verilerin nasıl çekileceği ve ardından xpath, preg_match_all (regex = düzenli ifadeler) ve son olarak da pek tercih edilmese de konunun daha iyi anlaşılması adına explode fonksiyonu ile aynı işlemleri yaptıracağım. Olabildiğince kod parçalarını sade ve basit tutmaya özen gösterdim. Daha ayrıntılı bir php bot yapımı yazısa buradan ulaşabilirsiniz.

Verilerin Çekilmesi

Verileri daha önce de belirttiğim üzere iki farklı yöntem kullanarak çekeceğim. Bunlardan ilki “file_get_contents” fonksiyonu yardımı ile uzaktan veri çekmek.

Veriler “https://www.turkiye.gov.tr” adresinden çekilecek bu adresi bir değişkene aktarmış olduk yukarıdaki kod yardımı ile.

file_get_contents İle Veri Çekmek

Böylelikle $source değişkenine bütün kaynak kodunu çekmiş olduk.

Curl İle Veri Çekmek

Bir diğer yöntem ise curl kütüphanesini kullanarak verileri çekme işlemidir. 

Bu şekilde de $source değişkenine hedef sitenin kaynak kodlarını çekmiş oluruz. Veri çekme işlemini yaptıktan sonra çekilen verilerin düzenlenmesi ve işe yarayacak, kullanılacak verilerin ayıklanması işlemine geçilmesi gerekir.

Verilerin Düzenlenmesi/Parçalanması

Çekilen verileri bir çok farklı yöntem ile parçalamak mümkün bu bölümde bunlardan üçünü ele alacağım. İlk olarak xpath kullanarak nasıl istenilen verilere ulaşılır görelim.

Xpath Kullanarak Verilerin Elde Edilmesi

Php ile nöbetçi eczane bilgileri çeken basit bot yapımı

Yukarıda ki kod bize eczane adını, adresini ve telefon numarasını sıralayacaktır. Kısaca açıklamak gerekirse birinci satırdaki libxml_use_internal_errors fonksiyonu bazı uyarıların gelmesini engeller. Xpath sorgularını çalıştırabilmek için yeni bir DOMDocument objesi oluşturuması ve daha önceki bölümde çekilen kaynak kodlarının aktarılması yer alıyor. Ardından $xpath değişkeni $doc değişkeni parametre verilerek oluşturuluyor. Bu işlemler yapıldıktan sonra istenilen verileri çekmek için sorgular üretebiliriz. Bu yazıda xpath sorgularının nasıl yazılacağına ayrıntılı olarak değinmeyeceğim. Sadece yukarıda ki örnekte kullanılan sorgu basitçe şöyle: id’si “contentStart” olan bir element bulunuyor onun altında ikinci div ve onunda altındaki tabloya ulaşılması hedefleniyor. Sonra foreach kullanılarak basit bir döngü oluşturuluyor. Her bir “td” elementine ulaşabilmek için yeni bir sorgu yapılıyor ve nihayet istenilen verilere ulaşılmış oluyor. Bu kodun çıktısı görselde verilmiştir.

preg_match_all Fonksiyonu Yardımı İle Verilerin Parçalanması

Burada da düzenli ifadeler (Regex) kullanarak yukarıdaki işlemin aynısı yapılacaktır.

Eczaneler Dizisi

Yukarıdaki gibi bir kullanım bize bütün “td” etiketleri arasındaki verileri bir dizi halinde $info değişkenine aktaracaktır. “print_r($info[1]);” kodunu çalıştırırsak bize yandaki gibi bir çıktı verir. Dikkat edilirse her beş eleman bir eczane bilgilerini vermektedir. Buna uygun bir for döngüsü yazılırsa istenilen sonuca ulaşılacaktır.

 

 

Explode Fonksiyonu İle Verilerin Elde Edilmesi

Son olarak da “explode” fonksiyonu ile yukarıdaki işlemlerin aynısını nasıl yapabiliriz ona bakalım.

Burada ki döngü preg_mach bölümünde anlatılan mantığın aynısıdır. Tercihe göre bütün yöntemler kullanılabilir. Elbette performans farkları olacaktır. Bütün yöntemlerin çıktıları aynı olacaktır.

Diğer Php Bot Örnekleri

Tüm Php Yazıları

Yazar Hakkında

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir