Ayrıştırma HTML: Bir üye işlev arayın>

3 Cevap php

Ben sadece bu soru ile yardımcı oldu ama HTML sonraki bloğa geçmek için alınamıyor.

$html = file_get_html('http://music.banadir24.com/singer/aasha_abdoo/247.html');

$urls = $html->find('table[width=100%] table tr');

foreach($urls as $url){

     $song_name = $url->children(2)->plaintext;

     $url = $url->children(6)->children(0)->href;   

}

Bu ilk albümün (Deesco) adlarının listesini verir ama bir sonraki albümün (Aasha Of The Best) devam etmez? Sadece bana bu hata veriyor:

Notice: Trying to get property of non-object in C:\wamp\www\test3.php on line 26

Fatal error: Call to a member function children() on a non-object in C:\wamp\www\test3.php on line 28

Neden bu nedir ve nasıl bunu bir sonraki tablo elemanına devam alabilirim?

Ben bu konuda herhangi bir yardım için teşekkür ederiz!

Lütfen dikkat: şarkılar telif hakkı ile bağlı ve özgürce indirmek için kullanılabilir değildir Bu yasal, onun sadece ben onlardan bir sürü indirmek gerekiyor ve ben bütün gün bir düğmeye tıklayarak orada oturamaz. Onun kadar bu almak için bana bir saat almıştı, o söyledikten sonra.

3 Cevap

Belki daha iyi bu gibi yazmak isterim:

foreach($urls as $url){

    if ($node = $url->children(6)) {
        $node->children(0)->href;   
    }

}

Muhtemelen o satırda herhangi bir altıncı çocuk olduğundan - hata sorgusu ->children(6) geçerli bir nesneyi dönmedi için anlamına gelir.

- Örneğin, iade HTML yapısını hata ayıklamaya çalıştığınızda neden bulmak için kullanarak print_r($url).

i albüm adları sadece tr bulunuyor eklemek için seçici rafine isteyeceksiniz düşünüyorum. Şu anda i beklenmedik sonuçlar doğurabilir tüm tr bulunuyor, kapma olacak inanıyorum. belki bir şey gibi $html->find('table[width=100%] table tr td .title');