2011-11-12 46 views
0

我正在使用以下代碼從網站獲取一些數據並將它們存儲在數據庫中。DOMXPath查詢錯誤,無法在網絡服務器中工作

<?php 

error_reporting(0); 
include("database.php"); 

$dom = new DOMDocument(); 
$url = "http://www.kitco.com"; 
$html = file_get_contents($url); 
$dom->loadHTML($html); 
$xp = new DOMXPath($dom); 
get_live_spot_gold(); 
get_silver_and_pgm(); 

function get_live_spot_gold() 
{ 
    global $xp; 
    $live_spot_gold = array(); 

    $bid='000'; 
    $change='000'; 
    $qs = $xp->query('//div[@class="item_border"]/table/tr[@class="alternating"][1]/td[2]'); 
    foreach($qs as $q) 
    { 
      $bid = $q->textContent; 
      break; 

    } 



    $qs = $xp->query('//div[@class="item_border"]/table/tr[@class="alternating"][2]/td[2]'); 
    foreach($qs as $q) 
    { 
     $change = $q->textContent; 
     break; 
    } 



    //insert into db 
    echo $bid."<br>"; 
    echo $change."<br>"; 
    $query = "UPDATE live_spot_gold SET _bid = '$bid' , _change = '$change'"; 
    echo $query; 
    $result = mysql_query($query); 
    if(!$result)echo "problem in live spot gold"."<br>"; 



} 




function get_silver_and_pgm() 
{ 
    global $xp; 
    $silver_and_pgm = array(); 
    $cnt=0; 
    $qs = $xp->query('//td[@id="right_column"]/div[@class="item_container"][2]/div[@class="item_border"]/table/tr'); 
    foreach ($qs as $q) 
    { 
     $line = $q->nodeValue; 
     $demo=""; 
     for($i=0;$i<strlen($line);$i++) 
     { 
      if($line[$i]==' ') 
      { 
       $demo.=' '; 
       for( ;$line[$i]==' ';$i++); 
      } 
      $demo.=$line[$i]; 

     } 
     $words = explode(" ",$demo); 
     $silver_and_pgm[$cnt][0]=$words[0]; //metal name 
     $silver_and_pgm[$cnt][1]=$words[1]; //bid 
     $silver_and_pgm[$cnt][2]=$words[2]; //change 
     $cnt++; 
    } 

    for($i=0;$i<$cnt;$i++) 
    { 
     $metal_name = $silver_and_pgm[$i][0]; 
     $bid = $silver_and_pgm[$i][1]; 
     $change = $silver_and_pgm[$i][2]; 

     //echo "here"; 
     echo $metal_name."<br>"; 
     echo $bid."<br>"; 
     echo $change."<br>"; 


     //$query = "insert into 'silver_and_pgm' values('$metal_name','$bid','$change')"; 
     //$query = "UPDATE silver_and_pgm set _bid='$bid' WHERE _metal_name='$metal_name'"; 

     //$query = "UPDATE silver_and_pgm set _bid = '$bid' WHERE _metal_name = '$metal_name'"; 
     $query = "UPDATE silver_and_pgm set _bid='$bid',_change = '$change' WHERE _metal_name 
        like'$metal_name%'"; 


     echo $query."<br>"; 
     $result = mysql_query($query); 
     if(!$result) 
      echo "problem in silver_and_pgm"."<br>"; 

    } 




} 



?> 

它只是在我的本地主機正常工作。但不在我的網絡服務器。它抓取數據並將它們存儲在本地主機中...沒有查詢,沒有echo語句在Web服務器中工作。 會有人請建議一種方法來處理這個問題?

回答

0

DOM需要PHP 5(並且要安裝libxml)。通過運行php_info()來確保您的服務器符合要求。此外,請重新打開錯誤報告並查看您遇到的錯誤。

相關問題