Basit HTML DOM Parser kullanarak bir sayfa öğeleri almak için nasıl

2 Cevap php

Ben Basit HTML DOM Parser kullanarak bir HTML sayfası ayrıştırmak çalışıyorum. Bu HTML sayfası zor elemanları başvurmak için yapar kimlikleri kullanımı yapmaz.

Bu sayfada ben Albüm adı, Şarkı adı, download linki ve albüm görüntü almak için çalışıyorum. Ben bunu yaptım ama ben bile Albüm adlarını alamıyor!

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

    $article = $html->find('table td[class=title]', 0);

    foreach($article as $link){

       echo $link;

    }

Bu çıkışlar: 1tdArrayArrayArray Artist Array

Ben çıktı bu tür almak gerekir:

Image Path
Duniya Jamiila [URL]
Macaan Badnoo  [URL]
Donimaayee     [URL]
...

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.

2 Cevap

Bu ne demek türden bir şey mi?

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

   echo $url->children(2);
   echo $url->children(6)->children(0)->href;
   echo '<br>';
}

Edit

Kullanma Simple HTML DOM.

Yorumlarınız dan ardından, burada bazı (umarım) yardımcı yorumlarla bazı güncel kod.

$urls = $html->find('table[width=100%] table tr');
foreach($urls as $url){
    // Check that we actually have the right number of children, this was what was breaking before
    if ($url->children(6)) {
        /* Without the following check, we get a digg icon and a useless link. You can merge this with the if statement above, I only have it
         * seperated so that I can write this comment and it will make more sense when reading it for the first time.
         */
        if ($url->children(2)->children(0)->src == 'images/digg.png' || $url->children(2)->children(0)->href == 'javascript:void(0)') continue;
        // echo out the name of the artist. You can get the text without the link by using $url->children(2)->plaintext
        echo $url->children(2);
        // echo out the link. Obviously you could put this href inside a <a href="code-here">whatever-here</a> tag to make the links clickable.
        echo $url->children(6)->children(0)->href;
        echo '<br>'; // just for readability
   }
}

Eğer değer "başlığı" ile bir sınıf özniteliği sizin örnekte kullanılan sayfada sadece üç TD etiketleri vardır.

1. <td height="35" class="title" style="padding-left:7px;"> Artist</td> 
2. <td colspan="3" height="35" class="title" style="padding-left:7px;"><img src="images/b24/dot_next.png" />Desco</td> 
3. <td colspan="3" height="35" class="title" style="padding-left:7px;"><img src="images/b24/dot_next.png" />The Best Of Aasha</td>

İlki, her zaman metin "Artist" ve diğerlerini albümlerin başlıkları içerir. Onlar da class = "Başlık" ve colspan = "3" bu HTML DOM Parser kullanarak bunları seçmek oldukça kolay olmalıdır böylece ile sadece TD etiketleri.