Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/294.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 从每个tr中的第一个td检索数据_Php_Screen Scraping_Simple Html Dom - Fatal编程技术网

Php 从每个tr中的第一个td检索数据

Php 从每个tr中的第一个td检索数据,php,screen-scraping,simple-html-dom,Php,Screen Scraping,Simple Html Dom,我正在抓取一个页面,其中包含一个包含多个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) {

我正在抓取一个页面,其中包含一个包含多个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;
    }
}

想想为什么要使用第二个
foreach
,而实际上只想对每行
中的一个元素执行操作

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

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

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

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

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

也就是说,

没问题。您还可以一次完成
$cells=$html->find('table tr')->find('td',0)
,我认为
$cells
最终将成为所有第一个td元素的数组,您可以根据需要将其转储。(顺便说一句,请标记为已接受?谢谢!)下次为+1显示一些html