这是我用来从http://www.partyhousedecorations.com抓取特定数据的代码
但是我一直收到这个错误(Fatal error: Call to a member function children() on a non-object in C:\wamp\www\webScraping\PartyHouseDecorations.php on line 8
),我陷入困境,似乎无法修复它。
这是我的代码:
<?php
include_once("simple_html_dom.php");
$serv=$_GET['search'];
$url = 'http://www.partyhousedecorations.com/category-adult-birthday-party-themes'.$serv;
$output = file_get_html($url);
$arrOfStuff = $output->find('div[class=product-grid]', 0)->children();
foreach( $arrOfStuff as $item )
{
echo "Party House Decorations".'<br>';
echo $item->find('div[class=name]', 0)->find('a', 0)->innertext.'<br>';
echo '<img src="http://www.partyhousedecorations.com'.$item->find('div[class=image]', 0)->find('img', 0)->src.'"><br>';
echo str_replace('KWD', 'AED', $item->find('div[class=price]',0)->innertext.'<br>');
}
?>
答案 0 :(得分:1)
看起来$output->find('div[class=product-grid]', 0)
没有使用名为children()
的方法返回对象。也许它返回null或者不是对象的东西。将它放在一个单独的变量中,看看该变量的值是什么。
$what_is_this = $output->find('div[class=product-grid]', 0);
var_dump($what_is_this)
更新
我调试了你的程序,除了简单的html dom解析器外,似乎期望将类作为'div.product-grid'
而不是'div[class=x]'
给出,结果表明网页通过返回产品列表而不是产品网格。我在下面附上了一份工作副本。
<?php
include_once("simple_html_dom.php");
$serv=$_GET['search'];
$url = 'http://www.partyhousedecorations.com/category-adult-birthday-party-themes';
$output = file_get_html($url);
$arrOfStuff = $output->find('div.product-list', 0)->children();
foreach( $arrOfStuff as $item )
{
echo "Party House Decorations".'<br>';
echo $item->find('div.name', 0)->find('a', 0)->innertext.'<br>';
echo '<img src="http://www.partyhousedecorations.com'.$item->find('div.image', 0)->find('img', 0)->src.'"><br>';
echo str_replace('KWD', 'AED', $item->find('div.price',0)->innertext.'<br>');
}
?>