Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/270.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 卖不到价钱_Php_Domdocument_Server Load_Server Response - Fatal编程技术网

Php 卖不到价钱

Php 卖不到价钱,php,domdocument,server-load,server-response,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 = "";

我正试图从一家网上商店买到价格

这里我使用的是这个代码

<?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);


?>
因为商店不断地改变产品的价格,所以可以这样定价吗。 有没有其他替代方法

此脚本是否会影响我的服务器性能,因为每当用户访问我网站上的产品页面时,它都会从5家不同的商店获取到comapare价格

$contents = $dom->document.getElementsByTagName("span");
您的$dom->文档失败,因为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


即使是打印也可以帮助您查看$contents中节点的结构。

如果您拥有从其网站获取价格的官方法律许可,您应该与他们联系,以获取xml或csv格式的价格提要。是的,它会影响页面加载。你应该缓存价格(memcache、redis、sql)。你可以删除dot,然后再试一次dotdonPoputMaster\u Sep2。&icmpid=hp\u dotd\u 3\u dotdonPoputMaster\u Sep2。?考虑在MySQL中存储价格,以减少再次从服务器获取数据的时间。尝试删除dotdonPoputMaster\u Sep2。&icmpid=hp\u dotd\u 3\u dotdonPoputMaster\u Sep2。?仍然出现相同的错误您只需要禁用警告,因为无效的html很常见。看到这个答案有帮助,但现在我只收到警告,没有输出警告是什么?警告:DOMDocument::loadHTML():意外结束标记:span in Entity,第6行E:\Local server\htdocs\store\scripts\getprice.php中的第261行警告:DOMDocument::loadHTML():htmlParseEntityRef:no name in Entity,第6行E:\Local server\htdocs\store\scripts\getprice.php中的第293行警告:DOMDocument::loadHTML():HTMLPARSENTYREF:实体中没有名称,第6行E:\Local server\htdocs\store\scripts\getprice.php中的第293行。。。。警告:DOMDocument::loadHTML():HTMLParserEntityRef:应为“;”在实体中,E:\Local server\htdocs\store\scripts\getprice.php在线中的第6125行6@user3811305按照我之前的建议关闭警告我的意思是我的脚本没有返回任何内容。
$contents = $dom->getElementsByTagName("span");