为什么这个 php 代码不起作用?
why is this php code not working?
这是我用来从 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>');
}
?>
看起来 $output->find('div[class=product-grid]', 0)
没有 return 具有名为 children()
的方法的对象。也许它是 returning null 或不是对象的东西。把它放在一个单独的变量中,看看那个变量的值是什么。
$what_is_this = $output->find('div[class=product-grid]', 0);
var_dump($what_is_this)
更新:
我调试了你的程序,除了简单的 html dom 解析器似乎期望 类 被给出为 'div.product-grid'
而不是 'div[class=x]'
它还发现该网页通过 returning 产品列表而不是产品网格来响应。我在下面包含了一份工作副本。
<?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>');
}
?>
这是我用来从 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>');
}
?>
看起来 $output->find('div[class=product-grid]', 0)
没有 return 具有名为 children()
的方法的对象。也许它是 returning null 或不是对象的东西。把它放在一个单独的变量中,看看那个变量的值是什么。
$what_is_this = $output->find('div[class=product-grid]', 0);
var_dump($what_is_this)
更新:
我调试了你的程序,除了简单的 html dom 解析器似乎期望 类 被给出为 'div.product-grid'
而不是 'div[class=x]'
它还发现该网页通过 returning 产品列表而不是产品网格来响应。我在下面包含了一份工作副本。
<?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>');
}
?>