对于php编程还是一个新手,我一直在尝试从网站(https://en.wikipedia.org/wiki/HP_EliteBook)中的表中抓取数据。尤其是获得使用Intel图形卡的Elitebook笔记本电脑,但是我在访问所需元素中的代码方面遇到了问题。如果有人能帮助我提出一个主意,我将不胜感激。
曾经使用simplehtmldom.php和foreach循环尝试访问表的td元素并打印结果,但是我得到的都是各种各样的错误。附件是我目前正在尝试的代码
<?php
include('simple_html_dom.php');
$html = file_get_html('https://en.wikipedia.org/wiki/HP_EliteBook');
$table= $html->find('table[class="wikitable"]',1);
//$tdata= array();
foreach($table->find('tr') as $tr){
$tdata[0] = $tr->find('td',0); //find the first td starts from 0
$tdata[1] = $tr->find('td',1);
$tdata[2] = $tr->find('td',2);
$tdata[3] = $tr->find('td',3);
$tdata[4] = $tr->find('td',4);
$tdata[5] = $tr->find('td',5);
$data[]= $tdata;
}
print_r($data);
?>
我至少希望看到其他所有单元格中的数据
答案 0 :(得分:0)
表列的长度不同,为此表使用索引3和4来获取图形卡名称。
<?php
include_once('/simple_html_dom.php');
$html = file_get_html('https://en.wikipedia.org/wiki/HP_EliteBook');
$table = $html->find('table.wikitable', 2);
$useIntel = array();
foreach ($table->find('tr') as $tr) {
if (!$tr->find('td', 0))
continue;
for ($i = 3; $i <= 4; $i++)
if ($tr->find('td', $i) && strpos($tr->find('td', $i)->innertext, 'Intel') !== false) {
$useIntel[] = $tr->find('td', 0)->innertext;
continue 2;
}
}
echo "<pre>";
var_dump($useIntel);