php中带有XPath的HTML表
我尝试了很多方法从中提取表: 我使用的是DOM、xpath和stackoverflow上的所有其他东西,它们都不起作用:/ 谁能告诉我怎么弄到那张桌子吗 是嵌套的。。。而且没有任何ID作为选择器,我没有主意了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
<?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个单元格大小。。。谢谢