2016-03-23 14 views
2

Bu basit_html_dom ayrıştırıcısını bir dış url'yi denemek ve ayrıştırmak için kullanıyorum. Çoğu sayfada doğru şekilde kullanabiliyorum.Örnek HTML DOM ayrıştırıcısı ayrıştırılmıyor <body> etiketi

Ancak web sitesi http://talksport.com/football/atletico-madrid-beat-arsenal-and-west-ham-signing-portuguese-wonderkid-diogo-jota

ayrıştırıcı html < vücut > etiketi tanımıyor ayrıştırmak çalıştığınızda.

require 'simple_html_dom.php'; 

$html = file_get_html('http://talksport.com/football/atletico-madrid-beat-arsenal-and-west-ham-signing-portuguese-wonderkid-diogo-jota'); 

// Find any tag for eg. <div> 
$tag = $html->find('div',0); 
var_dump($tag); 

Sonuç olarak null olsun.

Ben Bu neden oluyor anlamaya çalıştı ve

$x = $html->find('html',0)->children(); 

$ x <kafa> etikettir tek çocuk vardır bulundu. < gövde > etiketi, hiçbir şekilde ayrıştırılmamıştır.

Böyle bir sorunu daha önce karşılaştıran var mı? Lütfen yardım et.

cevap

1

seni böyle bir DOMDocument sınıfı ve cURL şey kullanmak öneririz:

$url = "http://talksport.com/football/atletico-madrid-beat-arsenal-and-west-ham-signing-portuguese-wonderkid-diogo-jota"; 

$ch = curl_init(); 
curl_setopt($ch, CURLOPT_URL, $url); 
$curlReturn = curl_exec($ch); 

$html = new DOMDocument(); 
$html->loadHTML($curlReturn); 
$body = $html->getElementsByTagName("body"); 

curl_close($ch); 

Basit ayrıştırıcı daha güçlü. http://php.net/manual/en/class.domdocument.php http://php.net/manual/en/book.curl.php

+0

DOMDocument html iyi oluşturulmadığından, bana bir çok Uyarı veriyor. Örneğin için. DOMDocument :: loadHTML(): Son etiket: Kurum içinde beklenen '>', satır: 132 –

+1

teşekkürler. libxml_use_internal_errors kullanarak uyarıların nasıl devre dışı bırakılacağını anladım –

1

bu web sitesinin HTML birçok sorunları vardır. Bkz W3 HTML validation report:

  1. HataBitiş etiketi div görülen, ancak açık unsurlar vardı.
    Hat 134'den, sütun 47; kapatılmamış elemanı a: hat 134, sütun 52

    n Live</p></div>?    < 
    
  2. hata için.
    133 numaralı satırdan, sütun 5; yinelenen id değerler, başıboş etiketleri, geçersiz niteliklerin söz, çocuk tarzı etiketlerin kullanımı yoktur vb

    sütun 90

    </h2>?    <a href="/live" class="listenLiveButtonTrigger" onclick="listenLive(1);return false;">?     
    

... 133 satıra, ... ve daha birçok konu.

Basit HTML DOM ayrıştırıcısının, tüm bu karmaşa içinde kaybolduğunu düşünüyorum.