无法获取价格

时间:2014-09-02 11:47:09

标签: php domdocument server-load server-response

我正在尝试从在线商店中获取价格。

我在这里使用此代码..

<?php
function getPrice($site){
    $html = file_get_contents($site);
    $dom = new DOMDocument();
    $dom->loadHTML($html);
    $contents = $dom->document.getElementsByTagName("span");        

    $price = "";
    for($i = 0; $i < $contents->length; $i++){
        $content= $contents->item($i);
        if($content->getAttribute('class') == "fk-font-verybig pprice vmiddle fk-bold"){
            $price = $content->getAttribute('value');
        }
    }
    echo $price;
}

$website = "http://www.flipkart.com/sogo-ss-5365-750-w-pop-up-toaster/p/itmdz3hgfjzgfp4v?pid=PUTDYWT2UHPCDCG8&offer=DOTDOnPopUpToaster_Sep2.&icmpid=hp_dotd_3_DOTDOnPopUpToaster_Sep2.";

getPrice($website);


?>

我的脚本返回错误

警告:DOMDocument :: loadHTML():意外的结束标记:实体中的span,第3行的E:\ Local server \ htdocs \ store \ scripts \ getprice.php中的第261行

Warning: DOMDocument::loadHTML(): htmlParseEntityRef: no name in Entity, line: 293 in E:\Local server\htdocs\store\scripts\getprice.php on line 5

...................................................................

Warning: DOMDocument::loadHTML(): htmlParseEntityRef: expecting ';' in Entity, line: 6160 in E:\Local server\htdocs\store\scripts\getprice.php on line 5

Notice: Undefined property: DOMDocument::$document in E:\Local server\htdocs\store\scripts\getprice.php on line 6

Fatal error: Call to undefined function getElementsByTagName() in E:\Local server\htdocs\store\scripts\getprice.php on line 6

这样的价格是否可以,因为商店不断改变其产品的价格。 有没有其他替代方法可以这样做?

此脚本是否会影响我的服务器性能,因为当用户访问我网站上的产品页面时,它会从5个不同的商店中获取价格以合计价格。

1 个答案:

答案 0 :(得分:0)

$contents = $dom->document.getElementsByTagName("span");

您的$ dom-&gt;文档失败,因为DOMDocument类没有名为“document”的属性。

Notice: Undefined property: DOMDocument::$document in E:\Local server\htdocs\store\scripts\getprice.php on line 6

所以这可能有效

$contents = $dom->getElementsByTagName("span");

上述情况应该有效。

我建议迭代$ contents而不是echo。

甚至print_r也可以帮助您查看$ contents中节点的结构。