Php 我够不到桌子上的td标签
我抓不到桌子的td标签。我试着第一个是td属性,第二个是价值。这是网站:Php 我够不到桌子上的td标签,php,laravel,domparser,Php,Laravel,Domparser,我抓不到桌子的td标签。我试着第一个是td属性,第二个是价值。这是网站: https://www.mecsumai.com/bkn-summary/?bid=16076001&bg1=026937&bg2=dce8e2&wdt=100%25&aln=center&newid=06076001 我的foreach代码是: $allTables = $DOMParser->getElementsByTagName('table'); f
https://www.mecsumai.com/bkn-summary/?bid=16076001&bg1=026937&bg2=dce8e2&wdt=100%25&aln=center&newid=06076001
我的foreach代码是:
$allTables = $DOMParser->getElementsByTagName('table');
foreach ($allTables as $table) {
foreach ($table->getElementsByTagName('tr') as $tr) {
$tds = $tr->getElementsByTagName('td');
if ($tds->length == 2) {
$property = trim($tds->item(0)->nodeValue);
$value = trim($tds->item(1)->nodeValue);
switch ($property) {
case '販売価額':
$changeForMyDB['price'] = $value;
break;
case '所在地':
$changeForMyDB['address'] = $value;
break;
case '総戸数':
$changeForMyDB['hows_old'] = $value;
break;
case '間取り':
$changeForMyDB['rooms'] = $value;
break;
case '建物竣工':
$changeForMyDB['old'] = $value;
break;
case '入居(予定)日':
$changeForMyDB['entery'] = $value;
break;
case 'バルコニー面積':
$changeForMyDB['balcon_m2'] = $value;
break;
case '管理会社':
$changeForMyDB['company_name'] = $value;
break;
case '物件名':
$changeForMyDB['name'] = $value;
break;
case '専有面積':
$changeForMyDB['extend'] = $value;
break;
default:
# code...
break;
}
}
}
}
Estates::insertGetId($changeForMyDB);
$this->line('DATA saved.');
}
}
}
我更新了代码,没有错误,但仍然无法获取数据。
我做错了什么?
有什么想法吗?谢谢大家! 您不能作为数组直接访问DOMNodeList,但您有一种访问节点的等效方法。我还添加了一些延迟检查,以确保tr至少有两个与属性和值对应的元素:
$dom = DOMDocument::loadHTMLFile("https://www.mecsumai.com/bkn-summary/?bid=16076001&bg1=026937&bg2=dce8e2&wdt=100%25&aln=center&newid=06076001");
$allTables = $dom->getElementsByTagName('table');
foreach ($allTables as $table){
foreach ($table->getElementsByTagName('tr') as $tr){
$tds = $tr->getElementsByTagName('td');
if ($tds->length == 2) {
$property = trim($tds->item(0)->nodeValue);
$value = trim($tds->item(1)->nodeValue);
$d[$property] = $value;
}
}
if (isset($d)) {
echo "Keys: " . count($d) . "\n";
unset ($d);
}
}
输出:
Keys: 31
Keys: 27
Keys: 30
该页面上没有th元素,因此您永远不会进入交换机…伙计,有什么帮助来解决该问题吗?我将th改为td,并将其改为number。但是没有改变,@msgI改变了表的部分,就像你说的,但是这次我得到了一个错误:调用未定义的方法DOMNodeList::getElementsByTagName更新了问题!您可以查看我是如何更改它的。在这部分中,foreach$table->getElementsByTagName'tr'作为$tr{好的,伙计,我现在没有收到错误,但仍然无法获得数据,我更新了问题代码。你也可以检查。顺便说一句,谢谢你帮我。我已经检查过了,伙计,我收到了保存在终端上的数据,但当我检查数据库时,没有数据。你是说每个周期都可以。那么问题一定是什么问题否则…正如我所说,检查它没有数据:我认为foreach循环不起作用