解析HTML表并提取数据

时间:2017-01-04 14:01:06

标签: php html dom xpath

我找到了这个话题: How to parse this table and extract data from it? 这可能是我的问题的答案,我想要同样的事情 - 解析一些外部表,提取数据并在我的网页上打印这些数据。 @Yoshi给出了完美的答案,但是当我尝试使用这段代码时,我得到的是空数组

  

Array()

我不知道为什么这不起作用?我试图使用相同的例子

<?php
$dom = new DomDocument;
$dom->loadHtmlFile('http://www.nbs.rs/kursnaListaModul/srednjiKurs.faces?lang=lat');

$xpath = new DomXPath($dom);

// collect header names
$headerNames = array();
foreach ($xpath->query('//table[@id="index:srednjiKursLista"]//th') as $node) {
    $headerNames[] = $node->nodeValue;
}

// collect data
$data = array();
foreach ($xpath->query('//tbody[@id="index:srednjiKursLista:tbody_element"]/tr') as $node) {
    $rowData = array();
    foreach ($xpath->query('td', $node) as $cell) {
        $rowData[] = $cell->nodeValue;
    }

    $data[] = array_combine($headerNames, $rowData);
}

print_r($data);
?>

1 个答案:

答案 0 :(得分:1)

页面已更改,这就是代码无效的原因,这个有效:

include('simple_html_dom.php');
$dom = new DomDocument;
$dom->loadHtmlFile('http://www.nbs.rs/kursnaListaModul/srednjiKurs.faces?lang=lat');

$xpath = new DomXPath($dom);

// collect header names
$headerNames = array();
foreach ($xpath->query('//table[@id="index:srednjiKursLista"]//th') as $node) {
    $headerNames[] = $node->nodeValue;
}

// collect data
$data = array();
foreach ($xpath->query('//tbody[@id="index:srednjiKursList:tbody_element"]/tr') as $node) {
    $rowData = array();
    foreach ($xpath->query('td', $node) as $cell) {
        $rowData[] = $cell->nodeValue;
    }

    $data[] = array_combine($headerNames, $rowData);
}
echo "<pre>";
print_r($data);
echo "</pre>";

现在,我想你想要提取一些货币的SREDNJI KURS值,你会这样做

echo $data[15]['SREDNJI KURS'];

这将以美元提取。