如何使用php从网站上的表格中抓取数据

时间:2019-09-08 22:58:42

标签: php web-scraping

对于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);

?>

我至少希望看到其他所有单元格中的数据

1 个答案:

答案 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);