Merhaba,
@buddy; arkadaşımızın isteği üzerine bu konuyu açma gereksinimi duydum. Öncelikle "
Simple HTML DOM Parser nedir?" sorusuna cevap vereyim.
Simple HTML DOM Parser, HTML üzerinden CSS seçicini kullanarak veri alışverişi yapmamıza yarayan bir sınıftır. Gayet kolay bir kullanımı vardır.
Simple HTML DOM Parser'in kullanımı;
Composer aracılığıyla
Simple HTML DOM Parser'i kurabiliriz veya
bu adresten sınıfı indirebiliriz. Ben bu konuda sadece
Composer ile nasıl kuracağımızı göstereceğim.
Bilgisayarınızda veya sunucunuzda
Composer kurulu değilse
şu yazımı okumanızı tavsiye ediyorum.
composer.json;
{
"minimum-stability": "dev",
"require": {
"sunra/php-simple-html-dom-parser": "~1"
}
}Bağımlılıkları yükledikten sonra deneme amaçlı bir dosya oluşturalım ve içerisine şu betiği ekleyelim.
<?php
# Hata raporlamayı aktifleştirelim ve E_ALL seviyesine getirelim.
error_reporting(E_ALL);
# Dosya dahil etme yolunun ön tanımlı değerini değiştirelim.
set_include_path(str_replace("\\", "/", dirname(realpath(__FILE__))));
# Tarih/Zaman problemlerini engellemek için ön tanımlı zamandilimini değiştirelim.
date_default_timezone_set("Europe/Istanbul");
# Bağımlılıkları yükleyelim.
require("vendor/autoload.php");
# Kullanacağımız sınıfları çalışma alanımızda tanımlayalım.
use \Sunra\PhpSimple\HtmlDomParser;
# Çalışma sayfamızın tipini "text/html" karakter setini "UTF-8" yapalım.
header("Content-Type: text/html; charset=UTF-8");
# Bağlantı yapacağımız URL adresi
$url = "http://www.youtube.com/";
# Simple HTML DOM Parser'i başlatalım.
$dom = HtmlDomParser::file_get_html($url);
# HTML içerisinde artık CSS seçicilerini kullanabiliriz.
# "feed-list" sınıfına sahip <ul> listesinin ikinci elemanını seçelim.
$feed = $dom->find("ul.feed-list li", 1);
# Liste içerisindeki video adreslerini almak istiyoruz.
# Bunun için $feed değişkeninde tekrardan bir CSS seçici kullanmalıyız.
$items = $feed->find("a");
# Seçtiğimiz videoları ekrana yazalım.
echo "<ul>";
# Öğelerimizi döngüye sokalım.
foreach($items as $item)
{
# Başlık ve URL adresi varsa ekrana yazalım.
if(isset($item->title) && isset($item->href))
{
printf("<li><a href=\"%s\">%s</a></li>", $url.ltrim($item->href, "/"), html_entity_decode($item->title, ENT_QUOTES, "UTF-8"));
}
}
echo "</ul>";Tarayıcımızdan çalıştırdığımızda şuna benzer bir sonuç elde edeceğiz.
Sormak istediğiniz sorular, örnek taleplerinizi konu altına mesaj olarak yazıp beni etiketlerseniz sevinirim. Saygılarımla,
Ogün Karakuş