我正在使用以下代码,但我收到了一些错误说 -
试图在 C:\xampp\htdocs\tables\index.php 中获取非对象的属性。
我有以下代码-
<?php
require 'simple_html_dom.php';
$html = file_get_html('http://mkp.gem.gov.in/oem-cartridge/samsung-111s-toner-rst/p-5116877-68482402616-cat.html');
foreach($html->find('div#sellers-table-wrap table tbody tr') as $article) {
$item['name'] = $article->find('td.seller-name div.seller-info span.seller-info-caption', 0)->plaintext;
$item['price'] = $article->find('td.offer-price span.variant-final-price span.m-w', 0)->plaintext;
$articles[] = $item;
}
echo "<pre>";
print_r($articles);
?>
更新:我也试过这个,但不起作用:
foreach($html->find('div#sellers-table-wrap table tbody tr') as $article) {
if (count($article->find('td.seller-name div.seller-info span.seller-info-caption')) > 0) {
$item['name'] = $article->find('td.seller-name div.seller-info span.seller-info-caption', 0)->plaintext;
$item['price'] = $article->find('td.offer-price span.variant-final-price span.m-w', 0)->plaintext;
}
$articles[] = $item;
}
echo "<pre>";
print_r($articles);
将循环中的选择器更改为:
foreach($html->find('div#sellers-table-wrap > table > tbody > tr') as $article) {
该表中还嵌套了其他表,因此您也在遍历它们的行。但是它们没有与您用来分配给$item['name']
and的选择器匹配的元素$item['price']
,因此这些find()
调用正在返回null
,从而导致错误。这个选择器只匹配顶级表中的行。
您还可以添加检查:
foreach($html->find('div#sellers-table-wrap > table > tbody > tr') as $article) {
$item = array();
$caption = $article->find('td.seller-name div.seller-info span.seller-info-caption', 0);
$mw = $article->find('td.offer-price span.variant-final-price span.m-w', 0);
if ($caption && $mw) {
$item['name'] = $caption->plaintext;
$item['price'] = $mw->plaintext;
$articles[] = $item;
}
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句