![oqk18ir.png oqk18ir.png](https://i.hizliresim.com/oqk18ir.png)
![p0qbke2.png p0qbke2.png](https://i.hizliresim.com/p0qbke2.png)
Merhabalar ben Bunjo, bu konuda PHP'de bulunan "Simple HTML DOM Parser" kütüphanesini anlatacağım.
Simple HTML DOM Parser
Simple HTML DOM Parser, tüm işlemleri çok basitleştiren ve dış kaynaktan elde edilen HTML kodlarını, içerisinde barındırdığı metotlar ile ayrıştırma işlemlerini kolaylaştıran hafif ve kullanışlı olan bir sınıf/kütüphane ve yardımcı araçtır. Orijinal sitesine ve dokümantasyonuna Simple HTML DOM documentation adresinden ulaşabilirsiniz.
Kütüphane Kurulumu
Kütüphanein indirme adresine giderek, kütüphaneyi indiriyoruz. İndirdiğiniz sürüme bağlı olarak dosya sayısı ve isimleri değişebilir, hafif bir kütüphane olduğunu daha önceden belirtmiştim bu sebep ile bizim sadece ihtiyacımız olan dosya "simple_html_dom.php" dosyası olacaktır.
XAMPP veya AppServ gibi kontrol panelleri ile web sunucunuzu başlattıktan sonra, "simple_html_dom.php" dosyanızı oluşturduğunuz proje dizinine atınız/kopyalayınız.
PHP dosyanıza require veya include fonksiyonları ile dahil edebilirsiniz.
Kurulumlar buraya kadardı.
Karşılaşabileceğiniz Hatalar
file_get_html() metotu ile herhangi bir URL'den DOM oluşturmaya çalıştığımızda "Warning: file_get_contents(): stream does not support seeking in" şeklinde hata alıyor iseniz, kullandığınız PHP sürümünüze göre farklı hata çözümleri deneyebilirsiniz.
Php.ini dosyanızda:
;allow_url_fopen = On
;extension=php_openssl.dll
satırlarının başlarında ";" işaretleri varsa, bu işaretleri kaldırınız, bu işaretler yorum satırı görevi görüp gerekli işlevlerin çalışmasını engelliyor. Bu değişiklerden sonra sunucunuzu yeniden başlatmanız gerekiyor. Sunucunuzu yeninden başlatmazsanız, yaptığımız değişiklerin hiçbirisi uygulanmayacaktır ve hata almaya devam edeceksiniz.
Eğer başka hatalar ile karşılaştıysanız, php.net ve stackowerflow.com adreslerinden gerekli hataların çözümlerini kolaylıkla bulabilirsiniz.
Temel Kullanım Örnekleri
Temel kullanımda dilerseniz ayrıştırdığınız HTML kodlarını str_get_html() fonksiyonu ile ya da direkt olarak site kaynağını file_get_html() fonksiyonu ile elde ederek kullanabilirsiniz.
HTML kodlarını kendimiz belirteceğimiz zaman, str_get_html() fonksiyonu içerisine tırnak işaretleri eşliğinde yazarız.
HTML kodlarını bir URL'den çekmek isterseniz, file_get_html() fonksiyonunu kullanmalısınız.
Simple HTML DOM Parser, tüm işlemleri çok basitleştiren ve dış kaynaktan elde edilen HTML kodlarını, içerisinde barındırdığı metotlar ile ayrıştırma işlemlerini kolaylaştıran hafif ve kullanışlı olan bir sınıf/kütüphane ve yardımcı araçtır. Orijinal sitesine ve dokümantasyonuna Simple HTML DOM documentation adresinden ulaşabilirsiniz.
![ctf0sk9.png ctf0sk9.png](https://i.hizliresim.com/ctf0sk9.png)
Kütüphane Kurulumu
Kütüphanein indirme adresine giderek, kütüphaneyi indiriyoruz. İndirdiğiniz sürüme bağlı olarak dosya sayısı ve isimleri değişebilir, hafif bir kütüphane olduğunu daha önceden belirtmiştim bu sebep ile bizim sadece ihtiyacımız olan dosya "simple_html_dom.php" dosyası olacaktır.
![kwp0mik.png](https://i.hizliresim.com/kwp0mik.png)
XAMPP veya AppServ gibi kontrol panelleri ile web sunucunuzu başlattıktan sonra, "simple_html_dom.php" dosyanızı oluşturduğunuz proje dizinine atınız/kopyalayınız.
PHP dosyanıza require veya include fonksiyonları ile dahil edebilirsiniz.
PHP:
<?php
include('simple_html_dom.php');
?>
Kurulumlar buraya kadardı.
![p0qbke2.png p0qbke2.png](https://i.hizliresim.com/p0qbke2.png)
Karşılaşabileceğiniz Hatalar
PHP:
<?php
include('simple_html_dom.php');
$html = file_get_html("https://www.google.com");
?>
file_get_html() metotu ile herhangi bir URL'den DOM oluşturmaya çalıştığımızda "Warning: file_get_contents(): stream does not support seeking in" şeklinde hata alıyor iseniz, kullandığınız PHP sürümünüze göre farklı hata çözümleri deneyebilirsiniz.
Php.ini dosyanızda:
;allow_url_fopen = On
;extension=php_openssl.dll
satırlarının başlarında ";" işaretleri varsa, bu işaretleri kaldırınız, bu işaretler yorum satırı görevi görüp gerekli işlevlerin çalışmasını engelliyor. Bu değişiklerden sonra sunucunuzu yeniden başlatmanız gerekiyor. Sunucunuzu yeninden başlatmazsanız, yaptığımız değişiklerin hiçbirisi uygulanmayacaktır ve hata almaya devam edeceksiniz.
Eğer başka hatalar ile karşılaştıysanız, php.net ve stackowerflow.com adreslerinden gerekli hataların çözümlerini kolaylıkla bulabilirsiniz.
![ctf0sk9.png ctf0sk9.png](https://i.hizliresim.com/ctf0sk9.png)
Temel Kullanım Örnekleri
Temel kullanımda dilerseniz ayrıştırdığınız HTML kodlarını str_get_html() fonksiyonu ile ya da direkt olarak site kaynağını file_get_html() fonksiyonu ile elde ederek kullanabilirsiniz.
HTML kodlarını kendimiz belirteceğimiz zaman, str_get_html() fonksiyonu içerisine tırnak işaretleri eşliğinde yazarız.
PHP:
<?php
include('simple_html_dom.php');
$html = str_get_html('<div class="bunjo">Ruby, PHP, C/C++</div>');
?>
HTML kodlarını bir URL'den çekmek isterseniz, file_get_html() fonksiyonunu kullanmalısınız.
PHP:
<?php
include('simple_html_dom.php');
$html = file_get_html("https://example.com/");
?>
HTML Elemanlarını Çekmek
Başlangıç olarak kendimizin tanımladığı HTML kodlarından, find() fonksiyonu ile veri çekmeye çalışalım.
Çıktı:
Bu örnekte "h1" etiketine sahip olan "Ruby, PHP, C/C++" verisini parse etmiş olduk.
Birden fazla "h1" etiketi varsa ve sınıf gözetilmeden bakılıyor ise;
Bir önce yaptığımız örnekte $dom[] dizisindne 0. elemanı almıştık, birden fazla aynı etikete sahip veri olduğu zaman $dom[0], $dom[1]...$dom[n] şeklinde kolaylıkla veriyi çekebilirsiniz.
Veya
Kod alternatiflerini deneyebilirsiniz.
Tüm elemanları yazdırmak isterseniz foreach() döngüsünü kullanabilirsiniz.
Kod Çıktısı:
Başlangıç olarak kendimizin tanımladığı HTML kodlarından, find() fonksiyonu ile veri çekmeye çalışalım.
PHP:
<?php
include('simple_html_dom.php');
$html = str_get_html('<h1 class="bunjo">Ruby, PHP, C/C++</h1>');
$dom = $html->find('h1');
echo $dom[0];
?>
Çıktı:
Kod:
Ruby, PHP, C/C++
Bu örnekte "h1" etiketine sahip olan "Ruby, PHP, C/C++" verisini parse etmiş olduk.
Birden fazla "h1" etiketi varsa ve sınıf gözetilmeden bakılıyor ise;
PHP:
<?php
include('simple_html_dom.php');
$html = str_get_html('<h1 class="bunjo">Ruby, PHP, C/C++</h1><h1 class="bunjo">Python, GoLang, C#</h1>');
$dom = $html->find('h1');
echo $dom[1];
?>
Bir önce yaptığımız örnekte $dom[] dizisindne 0. elemanı almıştık, birden fazla aynı etikete sahip veri olduğu zaman $dom[0], $dom[1]...$dom[n] şeklinde kolaylıkla veriyi çekebilirsiniz.
Veya
PHP:
<?php
include('simple_html_dom.php');
$html = str_get_html('<h1 class="bunjo">Ruby, PHP, C/C++</h1><h1 class="bunjo">Python, GoLang, C#</h1>');
echo $html->find('h1', 1);
?>
Kod alternatiflerini deneyebilirsiniz.
Tüm elemanları yazdırmak isterseniz foreach() döngüsünü kullanabilirsiniz.
PHP:
<?php
include('simple_html_dom.php');
$html = str_get_html('<h1 class="bunjo">Ruby, PHP, C/C++</h1><h1 class="bunjo">Python, GoLang, C#</h1>');
$dom = $html->find('h1');
foreach ($dom as $data) {
echo $data;
}
?>
![rpyj47v.gif rpyj47v.gif](https://i.hizliresim.com/rpyj47v.gif)
Kod Çıktısı:
Kod:
Ruby, PHP, C/C++
Python, GoLang, C#
Class (Sınıf) ve ID Bulmak
HTML kodları içerisinde yer alan CSS seçicileri kullanarak ayrıştırma işlemlerimizi yapabiliriz.
HTML kodları içerisinde yer alan CSS seçicileri kullanarak ayrıştırma işlemlerimizi yapabiliriz.
PHP:
<?php
include('simple_html_dom.php');
$html = str_get_html('<div id="konu"><p class="baslik">PHP HTML DOM Parser Kütüphanesi!</p><p class="yazar">Bunjo</p></div>');
?>
ID değerlerinden seçim yapmak için # (diyez) işaretini, sınıflardan seçim yapmak için ise "." işaretini kullanırız.
PHP:
<?php
include('simple_html_dom.php');
$html = str_get_html('<div id="konu"><p class="baslik">PHP HTML DOM Parser Kütüphanesi!</p><p class="yazar">Bunjo</p></div>');
$dom = $html->find('#konu');
echo $dom[0];
?>
Kod Çıktısı:
Kod:
PHP HTML DOM Parser Kütüphanesi!
Bunjo
![ovca0xc.gif ovca0xc.gif](https://i.hizliresim.com/ovca0xc.gif)
PHP:
<?php
include('simple_html_dom.php');
$html = str_get_html('<div id="konu"><p class="baslik">PHP HTML DOM Parser Kütüphanesi!</p><p class="yazar">Bunjo</p></div>');
$dom = $html->find('.baslik');
echo $dom[0];
?>
Kod Çıktısı:
Kod:
PHP HTML DOM Parser Kütüphanesi!
PHP:
<?php
include('simple_html_dom.php');
$html = str_get_html('<div id="konu"><p class="baslik">PHP HTML DOM Parser Kütüphanesi!</p><p class="yazar">Bunjo</p></div>');
$dom = $html->find('.yazar');
echo $dom[0];
?>
Kod Çıktısı:
Kod:
Bunjo
Çoklu Seçim
Sınıflar birden fazla HTML elemanlarına verilebilir. Bu durumda sınıf-eleman ayrıştırması yapıp istediğimiz veriyi ayırabiliriz.
Sınıflar birden fazla HTML elemanlarına verilebilir. Bu durumda sınıf-eleman ayrıştırması yapıp istediğimiz veriyi ayırabiliriz.
PHP:
<?php
include('simple_html_dom.php');
$html = str_get_html('<div><p class="abc123">Python</p><b class="abc123">Ruby</b><span class="abc123">PHP</span></div>');
$dom = $html->find('b.abc123');
echo $dom[0];
?>
Çıktı:
Kod:
Ruby
PHP:
<?php
include('simple_html_dom.php');
$html = str_get_html('<div><p class="abc123">Python</p><b class="abc123">Ruby</b><span class="abc123">PHP</span></div>');
$dom = $html->find('span.abc123');
echo $dom[0];
?>
Çıktı:
Anlatacaklarım bu kadardı daha fazlası için belirttiğim dokümantasyondan yararlanabilirsiniz.
Hatalar olabilir önerilere açığım, okuyan herkese teşekkür ederim.
Kod:
PHP
![2tvb2gm.gif 2tvb2gm.gif](https://i.hizliresim.com/2tvb2gm.gif)
![p0qbke2.png p0qbke2.png](https://i.hizliresim.com/p0qbke2.png)
Anlatacaklarım bu kadardı daha fazlası için belirttiğim dokümantasyondan yararlanabilirsiniz.
Hatalar olabilir önerilere açığım, okuyan herkese teşekkür ederim.
Son düzenleme: