• 04-03-2014, 01:17:48
    #1
    Kimlik doğrulama veya yönetimden onay bekliyor.
    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ş
  • 04-03-2014, 17:33:29
    #2
    Emeklerin İçin Teşekkürler Kardeşim..
    PHP Forumunda Aktif olarak gösterdiğin faaliyet ve Karşılıksız yardım çabalarından ötürü Tebrik ediyorum..

    Senin gibi yardımsever kardeşlerimiz olduğu için gerçekten büyük onur duyuyorum.
    Başarılarının devamını dilerim..
  • 04-03-2014, 17:39:39
    #3
    @ArMoR; Yorumunuz için teşekkür ederim. Faydalı olabildiysem ne mutlu bana, ayrıca imzanızı çok beğendim.
  • 04-03-2014, 18:13:26
    #4
    @saintx benim ajax konusunda bazı sıkıntılarım vardı açıkçası bu tarz bir yerden veri çekerken ya da post etmeye çalışırken sürekli makale arayışına giriyordum. Bu sayede işim baya kolaylaştı. Önceki url fatcher konusunu izleyince tamamiyle fikir sahibi olmuş oldum. Teşekkür ederim bu değerli bilgiler için.
  • 04-03-2014, 19:55:10
    #5
    Üyeliği durduruldu
    Yine harikasın. tebrik ve teşekkürler.
    (sanalpos kütüphanesi sırada mı? :P )
  • 04-03-2014, 21:08:21
    #6
    @Quismo; yavaş yavaş benimde halletmem gereken işlerim var, boş vakit bulabilirsem hazırlayıp ekleyeceğim.
  • 13-05-2014, 19:15:17
    #7
    Konuyu güncelleyelim, konuyu görmeyenlerde nasiplensin.
  • 13-05-2014, 21:08:25
    #8
    Ogün eline sağlık kardeş paylaşım için teşekkürler. Ben bu kütübaneyi hiç kullanmadım. Web crawler gibi uygulamalar geliştiriyorum genellikle curl kullanıyorum. Hız konusunda sıkıntı yaşarmıyım bu sınıfta. Hiç bu tarzda çok fazla veri üstünde işlem yapan oldumu. Çünkü sürekli html bulma ve parse etmeniz gerekiyor.
  • 14-05-2014, 00:21:17
    #9
    aLKaDraZ adlı üyeden alıntı: mesajı görüntüle
    Ogün eline sağlık kardeş paylaşım için teşekkürler. Ben bu kütübaneyi hiç kullanmadım. Web crawler gibi uygulamalar geliştiriyorum genellikle curl kullanıyorum. Hız konusunda sıkıntı yaşarmıyım bu sınıfta. Hiç bu tarzda çok fazla veri üstünde işlem yapan oldumu. Çünkü sürekli html bulma ve parse etmeniz gerekiyor.
    HTML içinden veri almak istediğim zaman hep bunu kullanıyorum. Uzun uzadıya Regex deseni yazmaktansa daha iyi oluyor.