Разбор HTML: вызов функции-члена> children () для необъекта - PullRequest
0 голосов
/ 02 июня 2010

Мне только что помогли с этим вопросом, но я не могу заставить его перейти к следующему блоку HTML.

$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;   

}

Возвращает список названий первого альбома (Deesco), но не переходит к следующему альбому (The Best Of Aasha)? Это просто дает мне эту ошибку:

Примечание: попытка получить собственность не объект в C: \ wamp \ www \ test3.php на линии 26

Неустранимая ошибка: вызов функции-члена children () для необъекта в C: \ wamp \ www \ test3.php в строке 28

Почему это так и как я могу заставить его перейти к следующему элементу таблицы?

Я ценю любую помощь в этом!

Обратите внимание: это законно, так как песни не связаны авторским правом, и они доступны для бесплатной загрузки, просто мне нужно скачать их много, и я не могу сидеть и нажимать на кнопку целый день. Сказав это, мне потребовался час, чтобы получить это далеко.

Ответы [ 3 ]

2 голосов
/ 02 июня 2010

Может быть, вам лучше написать это так:

foreach($urls as $url){

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

}
0 голосов
/ 02 июня 2010

Я думаю, что вы захотите уточнить свой селектор, чтобы включить только tr из названий альбомов. в настоящее время я верю, что вы получите все трэны, которые могут привести к неожиданным результатам. может быть что-то вроде $html->find('table[width=100%] table tr td .title');

0 голосов
/ 02 июня 2010

Ошибка означает, что ваш запрос для ->children(6) не вернул допустимый объект - возможно потому, что в этой строке нет шестого дочернего элемента.

Чтобы выяснить, почему нет, попробуйте отладить возвращенную структуру HTML - например, используя print_r($url).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...