1 回答
TA贡献1806条经验 获得超5个赞
我看到的几个问题:
$tables->item(1)->getElementsByTagName('tr');
将始终为您提供页面中的第二个表格,该表格将是右侧个人统计数据块中的表格由于
$cols[2]
不是简单类型的对象,您将收到警告而不是内容。用于echo $cols[2]->textContent
输出内部文本。
我建议加载所有表,然后根据结果表中不同的表标题进行检查(如果您正在解析结果表)。然后提取适当的列。
示例代码:
下面的代码仅显示如何检查表中的示例标题“Result”,然后输出结果列。请根据您的预期目的进行调整。
<?php
$table = file_get_contents('https://en.wikipedia.org/wiki/Sugar_Ray_Robinson');
$dom = new DOMDocument;
$dom->loadHTML($table);
$dom->preserveWhiteSpace = false;
$tables = $dom->getElementsByTagName('table');
foreach ($tables as $singleTable) {
try {
$rows = $singleTable->getElementsByTagName('tr');
// check if we are parsing the right table:
$row1= $rows[0]->getElementsByTagName('th');
$isResultTable= FALSE;
foreach ($row1 as $th) {
if (trim($th->textContent) === 'Result') {
$isResultTable = TRUE;
}
}
if (!$isResultTable) continue;
foreach ($rows as $row) {
$cols = $row->getElementsByTagName('td');
echo $cols[2]->textContent;
}
} catch (Exception $ex) {
print_r($ex);
}
}
- 1 回答
- 0 关注
- 122 浏览
添加回答
举报