Извлекать href с таблицы посредством PHP

Захотела извлечь с таблицы на Веб странице контент этой больше ссылка, которая есть у каждой из них, уже я извлекаю таблицу, но мне не хватает прибывать к tag href, они могут помогать мне?.

Это таблица:

introducir la descripción de la imagen aquí

Использованный код - следующий:

$tabla = $html->getElementsByTagName("table")->item(1);

foreach($tabla->getElementsByTagName('tr') as $tr) {

$tds = $tr->getElementsByTagName('td'); // get the columns in this row

$href =  $tr->getElementsByTagName('a'); //->item(0)->getAttribute('href');
if (trim($tds->item(0)->nodeValue) <> '') {

    echo $tds->item(0)->nodeValue." , ".
         $tds->item(1)->nodeValue." , ".
         $tds->item(1)->nodeValue." , ".
         $tds->item(3)->nodeValue." , ".
         $tds->item(4)->nodeValue." , ".
         $tds->item(5)->nodeValue." , ".
         $tds->item(6)->nodeValue." , ".
         $tds->item(7)->nodeValue." , ".
         $tds->item(8)->nodeValue." , ";
        //$href;

    echo "<br />";   
}
}

Спасибо заранее

Улисс

Благодаря всем из-за Ваших ответов, я осуществил их, но меня бросает ошибка, к лучшей ясности я размещаю весь код, если они это выполняют, выходит ошибка, которую я показываю ниже:

<?php
    error_reporting(0);
    $html = new DomDocument;
    $source = file_get_contents("http://seia.sea.gob.cl/busqueda/buscarProyectoAction.php?nombre=central&_paginador_refresh=0&_paginador_fila_actual=2");

    $html->loadHTML($source);

    // Cada TR

    $tabla = $html->getElementsByTagName("table")->item(1);

    foreach($tabla->getElementsByTagName('tr') as $tr)
    {
        $tds = $tr->getElementsByTagName('td'); // get the columns in this row

        //$href = $tds->getAttribute('href');

        $href = $tds->getElementsByTagName('a')->item(0)->getAttribute('href'‌​);

        if (trim($tds->item(0)->nodeValue) <> '') {

            echo $tds->item(0)->nodeValue." , ".
                 $tds->item(1)->nodeValue." , ".
                 $tds->item(1)->nodeValue." , ".
                 $tds->item(3)->nodeValue." , ".
                 $tds->item(4)->nodeValue." , ".
                 $tds->item(5)->nodeValue." , ".
                 $tds->item(6)->nodeValue." , ".
                 $tds->item(7)->nodeValue." , ".
                 $tds->item(8)->nodeValue." , ";
                 //$href;

            echo "<br />";   
        } 

        //break; // don't check any further rows

    }
?>

introducir la descripción de la imagen aquí

1
задан 05.01.2017, 18:46
0 ответов

Я это сделал, и если оно функционирует

$html = <<<HTML
<html>
    <head>

    </head>
    <body>
        <table>
            <tr>
                <td><a href="http://localhost"/></td>
                <td></td>
                <td></td>
                <td></td>
            </tr>
        </table>
    </body>
</html>
HTML;

$var = new DOMDocument();
$var->loadHTML($html);
echo '<pre>';
print_r($var->getElementsByTagName('a')->item(0)->getAttribute('href'));
echo '</pre>';

и результат

http://localhost

Разум, из-за которого тебя помечает ошибка,, - потому что, получив твои элементы <a>

$a = $tr->getElementsByTagName('a');

ты должен проверять, что по крайней мере был какой-либо на твоих данных

if($a->length > 0){
    $href = $a->item(0)->getAttribute('href');
}

или ты можешь реализовывать повторение, и перемести break в конце твоего цикла, так как вышеупомянутая таблица получает первого tr как cabezera и там нет никакой <a>, после того, как не смогли получать item(0) не моги выполнять getAttribute на null, поэтому ошибка

Превосходный...!!!! оно функционировало в совершенство. Спасибо...

1
ответ дан 03.12.2019, 17:52
$href = array();
foreach ($tds as $td) {
    $href [] = $td->getAttribute('href ');
}

или

 $href = $tds[0]->getAttribute('href ');

Первый пример был бы в случае, если ты нуждался в том, чтобы извлечь href более чем одного td, в этом примере пробеги все td и сохраняй в array грязь href таким образом:

$ref[0]=href1; 
$ref[1]=href2; 
$ref[2]=href3; 
$ref[3]=href4; 

и вторая ты ты согласился бы прямо на признак href первого td.

Спасибо за твой ответ,

я осуществил твой ответ, но меня бросает следующая ошибка:

Фатальная ошибка: Call to undefined method DOMNodeList:: getAttribute ()

1
ответ дан 03.12.2019, 17:52
  • 1
    Этот сайт старается давать ответы и explciarlas. Иногда не достаточно помещать фрагмент có я говорю, лучше объяснять это tambié n, пальто, если ты даешь более одной solució n. ¿ Podrí схвати говорить различия между ними с Вашими преимуществами и невыгодами? –  05.01.2017, 17:35
  • 2
    Тысяча извинений, я новый. –  05.01.2017, 17:55

Теги

Похожие вопросы