2014-09-02 6 views
0

Я пытаюсь получить цену в интернет-магазине.Не удалось получить цену

Здесь я использую этот код ..

<?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(): Неожиданный конечный тег: пролет в Entity, строка: 261 в E: \ Local \ сервер HTDOCS \ магазин \ сценарии \ getprice.php по строке 5

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

Если у вас есть официальное юридическое разрешение на получение цены со своего сайта, вы должны связаться с ними, чтобы получить ценовой канал в формате xml или csv. И да, это влияет на загрузку страницы. Вы должны кэшировать цены (memcache, redis, sql). – DanFromGermany

+0

вы можете просто удалить точку и попробовать один раз DOTDOnPopUpToaster_Sep2. & Icmpid = hp_dotd_3_DOTDOnPopUpToaster_Sep2.? –

+0

Мышление, чтобы хранить цены в MySQL, чтобы сократить время от получения снова формы сервера – user3811305

ответ

0
$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"); 

выше должно работать.

Я рекомендую повторять над $ содержимым вместо эха.

Даже print_r поможет вам увидеть структуру узлов в $ contents.

+0

Thnx, который помог, но теперь я просто получаю предупреждения, но не вывод – user3811305

+0

Каковы предупреждения? – MontrealDevOne

+0

Предупреждение: DOMDocument :: loadHTML(): Неожиданный конечный тег: span в Entity, строка: 261 в E: \ Local server \ htdocs \ store \ scripts \ getprice.php в строке 6 Предупреждение: DOMDocument :: loadHTML() : htmlParseEntityRef: нет имени в Entity, строка: 293 в E: \ Local server \ htdocs \ store \ scripts \ getprice.php в строке 6 Предупреждение: DOMDocument :: loadHTML(): htmlParseEntityRef: нет имени в Entity, строка: 293 в E: \ Локальный сервер \ htdocs \ store \ scripts \ getprice.php в строке 6 .... Предупреждение: DOMDocument :: loadHTML(): htmlParseEntityRef: ожидание ';' в Entity, строка: 6125 в E: \ Local server \ htdocs \ store \ scripts \ getprice.php в строке 6 – user3811305

 Смежные вопросы

  • Нет связанных вопросов^_^