Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/xpath/2.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/flash/4.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中带有XPath的HTML表_Php_Xpath - Fatal编程技术网

php中带有XPath的HTML表

php中带有XPath的HTML表,php,xpath,Php,Xpath,我尝试了很多方法从中提取表: 我使用的是DOM、xpath和stackoverflow上的所有其他东西,它们都不起作用:/ 谁能告诉我怎么弄到那张桌子吗 是嵌套的。。。而且没有任何ID作为选择器,我没有主意了 <?php $ch = curl_init("https://secure.tickertech.com/bnkinvest/cgi/?a=historical&ticker=IVV&w=dividends"); curl_setopt($ch, CURLOPT_R

我尝试了很多方法从中提取表:

我使用的是DOM、xpath和stackoverflow上的所有其他东西,它们都不起作用:/

谁能告诉我怎么弄到那张桌子吗

是嵌套的。。。而且没有任何ID作为选择器,我没有主意了

<?php
$ch = curl_init("https://secure.tickertech.com/bnkinvest/cgi/?a=historical&ticker=IVV&w=dividends");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_BINARYTRANSFER, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
$content = curl_exec($ch);
curl_close($ch);

$doc = new DOMDocument();

// It's rare you'll have valid XHTML, suppress any errors- it'll do its best.
@$doc->loadhtml($content);

$xpath = new DOMXPath($doc);

// Modify the XPath query to match the content
foreach($xpath->query('//table')->item(1)->getElementsByTagName('tr') as $rows) {
    $cells = $rows->getElementsByTagName('td');
    if($cells->lenght() ==2)
    {
        print_r($cells);
    }
}

我已经调整了XPath以确保得到正确的表,但是正如您所说,没有任何id或类来区分它。这将查找包含tr和td组合的嵌套表。然后使用与当前相同的代码检查是否有2列,然后输出数据

foreach( $xpath->query('//table[1]//table//table/tr[td]') as $rows) {
    $cells = $rows->getElementsByTagName('td');
    if($cells->length ==2)
    {
        echo $cells[0]->textContent."=>".$cells[1]->textContent.PHP_EOL;
    }
}

如果你能展示到目前为止你所做的尝试,我相信有人会提供帮助。print_r($xpath->query('//html/body/p[2]/table[1]/tbody/tr/td[1]/table/tbody/tr/td/table');0结果。。。在ArrayI中,如果您从浏览器获得路径,它可以添加自己的元素-文档不包含和tbody标记。哦,找到了。。。它的s循环,在循环中使用xpath,然后验证2个单元格大小。。。谢谢