PHP İle Web Scraping Yapmak?

Programlama hakkında genel bilgilerin, dökümanların yer aldığı bölümümüz.
Cevapla
Kullanıcı avatarı
TRWE_2012
Mesaj Panosu Yöneticisi
Mesaj Panosu Yöneticisi
Mesajlar: 904
Kayıt: 30 Ağu 2022 21:59
Konum: DÜZCE/Akçakoca
Meslek: MADEN MÜHENDİSİ
Teşekkür etti: 254 kez
Teşekkür edildi: 754 kez
İletişim:

PHP İle Web Scraping Yapmak?

Mesaj gönderen TRWE_2012 »

Merhabalar

Makalemize başlamadan önce; örnek olarak www.site_adı.com.tr adresini referans alacağız.

Web Scraping Nedir?

Web scraping, bir web sitesinden otomatik olarak veri çekme işlemidir. Bu işlem, genellikle bir web sayfasının HTML içeriğini analiz ederek belirli bilgileri çıkarmak için kullanılır. PHP gibi programlama dilleri, bu tür işlemleri gerçekleştirmek için çeşitli fonksiyonlar sunar.

PHP ile Web Scraping

Aşağıda, www.site_adı.com.tr adresinden belirli bir resim kaynağını çekmek için kullanılacak bir PHP kodu örneği bulunmaktadır.

Kod Örneği:

Kod: Tümünü seç


<?php
// Hedef web sitesi
$siteadi = "www.site_adı.com.tr"; // Burada hedef web sitesinin adresini tanımlıyoruz

// Web sayfasının içeriğini alıyoruz
$site = file_get_contents("http://$siteadi"); // file_get_contents() fonksiyonu ile sayfanın içeriğini çekiyoruz

// Belirli bir img etiketini bulmak için içeriği parçalıyoruz
$title = explode('<img src="img/pr/1/pr', $site); // '<img src="img/pr/1/pr' dizesini kullanarak parçalama yapıyoruz

// İkinci parçayı alarak, resim dosyasının adını buluyoruz
$title = explode('.gif"', $title[1]); // '.gif"' dizesine kadar olan kısmı alıyoruz

// Elde edilen resim dosyasının adını ekrana bastırıyoruz
echo $title[0]; // Sonuç olarak resim dosyasının adını ekrana yazdırıyoruz
?>

Kodun Açıklaması

1.Hedef Web Sitesi:

Kod: Tümünü seç

$siteadi = "www.site_adı.com.tr";
Bu satırda, scraping yapmak istediğimiz web sitesinin adresini tanımlıyoruz. Bu adres, daha sonra file_get_contents() fonksiyonunda kullanılacaktır.

2.Web Sayfasının İçeriğini Alma:

Kod: Tümünü seç

$site = file_get_contents("http://$siteadi");
file_get_contents() fonksiyonu, belirtilen URL'den (bu durumda http://www.site_adı.com.tr) içeriği alır ve bir dize olarak döndürür. Bu içerik, HTML formatında olacaktır.

3.İçeriği Parçalama:

Kod: Tümünü seç

$title = explode('<img src="img/pr/1/pr', $site);
Bu satırda, HTML içeriğini belirli bir dizeye göre parçalıyoruz. Burada, <img src="img/pr/1/pr dizesini kullanarak, bu dizeyi içeren kısmı buluyoruz. explode() fonksiyonu, bu dizeyi bulduğunda içeriği iki parçaya ayırır.

4.Resim Dosyasının Adını Bulma:

Kod: Tümünü seç

$title = explode('.gif"', $title[1]);
İlk parçalamadan elde edilen dizinin ikinci elemanını ($title[1]) kullanarak, .gif" dizesine kadar olan kısmı alıyoruz. Bu işlem, resim dosyasının adını elde etmemizi sağlar.

5.Sonucu Ekrana Bastırma:

Kod: Tümünü seç

echo $title[0];
Son olarak, elde edilen resim dosyasının adını ekrana bastırıyoruz. Bu, scraping işleminin sonucunu kullanıcıya gösterir.

Dikkat Edilmesi Gerekenler

1.Yasal Durum:

Web scraping yaparken, hedef web sitesinin kullanım şartlarına ve yasalara uymak önemlidir. Bazı siteler, içeriklerinin izinsiz çekilmesini yasaklayabilir.

2.Performans:

Çok sayıda istek göndermek, hedef web sitesinin sunucusuna yük bindirebilir. Bu nedenle, scraping işlemlerini dikkatli bir şekilde ve makul bir hızda gerçekleştirmek önemlidir.

3.Hata Yönetimi:

Gerçek uygulamalarda, file_get_contents() gibi fonksiyonların başarısız olabileceği durumlar için hata yönetimi eklemek iyi bir uygulamadır.

Sonuç olarak ;

Bu makalede, PHP kullanarak bir web sitesinden içerik çekme ve belirli bir resim kaynağını bulma işlemini ele aldık. Örnek kod, temel bir web scraping işlemini göstermektedir. Şimdi, bu süreci daha da derinlemesine inceleyelim ve bazı ek özellikler ekleyelim.

Gelişmiş Özellikler

1.Hata Yönetimi:

Web scraping işlemleri sırasında, hedef web sitesine erişim sorunları veya içerik değişiklikleri gibi durumlarla karşılaşabilirsiniz. Bu nedenle, hata yönetimi eklemek önemlidir. Aşağıda, file_get_contents() fonksiyonunun başarısız olması durumunda bir hata mesajı gösteren bir örnek bulunmaktadır:

Kod: Tümünü seç

$site = @file_get_contents("http://$siteadi"); // @ operatörü ile hata mesajını gizliyoruz
if ($site === FALSE) {
    die("Web sayfasına erişim sağlanamadı.");
}
Bu kod, sayfaya erişim sağlanamazsa kullanıcıya bir hata mesajı gösterir.

2.Daha Esnek Parçalama:

Eğer web sayfasının yapısı değişirse, belirli bir dizeye bağlı kalmak yerine, daha esnek bir yaklaşım kullanmak isteyebilirsiniz. Örneğin, DOMDocument sınıfını kullanarak HTML içeriğini daha güvenilir bir şekilde analiz edebilirsiniz:

Kod: Tümünü seç


$dom = new DOMDocument();
@$dom->loadHTML($site); // Hataları gizlemek için @ operatörünü kullanıyoruz

$images = $dom->getElementsByTagName('img'); // Tüm img etiketlerini alıyoruz
foreach ($images as $img) {
    $src = $img->getAttribute('src'); // Her img etiketinin src özniteliğini alıyoruz
    if (strpos($src, 'img/pr/1/pr') !== false) { // Belirli bir dizeyi kontrol ediyoruz
        echo $src . "<br>"; // Eşleşen resim kaynaklarını ekrana bastırıyoruz
    }
}

Bu yöntem, HTML içeriğini daha güvenilir bir şekilde analiz etmenizi sağlar ve sayfanın yapısındaki değişikliklere karşı daha dayanıklıdır.

3.Veri Kaydetme:

Elde ettiğiniz verileri bir dosyaya veya veritabanına kaydetmek isteyebilirsiniz. Örneğin, elde edilen resim dosyası adlarını bir metin dosyasına kaydetmek için aşağıdaki kodu kullanabilirsiniz:

Bu kod, her elde edilen resim dosyası adını resimler.txt adlı bir dosyaya ekler.

İmdi makaleyi toptan özetleyelim …


Bu makalede, PHP ile web scraping işlemini daha ayrıntılı bir şekilde ele aldık. Hata yönetimi, esnek parçalama ve veri kaydetme gibi gelişmiş özellikler ekleyerek, scraping işleminizi daha güvenilir ve kullanışlı hale getirdik. Web scraping, doğru bir şekilde yapıldığında, birçok faydalı veri elde etmenizi sağlayabilir. Ancak, her zaman yasalara ve etik kurallara uymak önemlidir.


Yararlanılan Kaynaklar :

PHP Manual - file_get_contents() : https://www.php.net/manual/en/function. ... ntents.php
PHP Manual - DOMDocument : https://www.php.net/manual/en/class.domdocument.php
Web Scraping Best Practices : https://www.scrapingbee.com/blog/web-sc ... practices/

Hazırlayan :

TRWE_2012
Maden Mühendisi
Alaydan Yetişme PC Kullanıcısı
DÜZCE/Akçakoca
Aralık 2024

Verily We have granted thee a manifest Victory
Fetih Suresi - 1.Ayet


Resim
Resim

Etiketler:
Kullanıcı avatarı
TRWE_2012
Mesaj Panosu Yöneticisi
Mesaj Panosu Yöneticisi
Mesajlar: 904
Kayıt: 30 Ağu 2022 21:59
Konum: DÜZCE/Akçakoca
Meslek: MADEN MÜHENDİSİ
Teşekkür etti: 254 kez
Teşekkür edildi: 754 kez
İletişim:

Re: PHP İle Web Scraping Yapmak?

Mesaj gönderen TRWE_2012 »

NOT:

Bu makale yazısı dört günde (ilk iki gün kurgulama,diğer iki gün çeviri işlemleri) hazırlanmıştır.Ve "YazılımAdasında" ilk makale yazımızdır.İnşallah daha da, gerisi de gelecektir.
Verily We have granted thee a manifest Victory
Fetih Suresi - 1.Ayet


Resim
Resim
Cevapla

“Genel Programlama” sayfasına dön