我正在尝试从在线商店中获取价格。
我在这里使用此代码..
<?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个不同的商店中获取价格以合计价格。
答案 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中节点的结构。