1

我正在抓取一个页面,其中包含一个包含多个 tr 的表格。每个 tr 里面有四个 td,我想从这些 td 中的第一个获取数据。下面是我到目前为止尝试过的代码,但它抓住了所有的 td。我怎样才能完成我想要的?

...
$html = new simple_html_dom();
$html = file_get_html($url);

foreach($html->find('table tr') as $row) {
    foreach($row->find('td', 0) as $cell) {
        echo $cell;
    }
}
4

2 回答 2

2

想想你为什么要使用第二个foreach,而实际上你只是想对每个元素中的一个元素采取行动row

$html = new simple_html_dom();
$html = file_get_html($url);

foreach($html->find('table tr') as $row) {
    $cell = $row->find('td', 0);
    echo $cell;
}
于 2012-12-29T11:06:14.753 回答
1

简单的 html dom 是个垃圾。使用内置的 dom 函数和 xpath 更简单:

$dom = new DOMDocument();
@$dom->loadHTMLFile($url);
$xpath = new DOMXPath($dom);

foreach($xpath->query('//td[1]') as $td){
  echo $td->nodeValue;
}

也就是说,我可能仍然更喜欢使用 phpquery

于 2012-12-29T12:39:18.673 回答