2012-11-25 48 views
1
<? 

$file = "http://www.google.com"; 
$doc = new DOMDocument(); 
echo @$doc->loadHTML(file_get_contents($file)); 


$element = $doc->getElementsbyTagName('span'); 



echo trim($element->item(0)->nodeValue); 
echo trim($element->item(0)->textContent); 

if (!is_null($element)) { 
     $content = $element->nodeValue; 

     if (empty($content)) { 
      $content = $element->textContent; 


      } 

      echo $content . "\n"; 
     } 

?> 

我想測試這個腳本,我想知道爲什麼我不能解析谷歌?如果您查看源頁面,則在跨度中按ctrl + f類型顯然有一個跨度標記。爲什麼它不給我結果?解析腳本沒有放出

+1

您是否嘗試過在DOMDocument中輸出HTML? 'var_dump($ doc-> saveHTML());'看看它是否包含你認爲它的內容? – PeeHaa

+3

你嘗試購買晚餐嗎? – rutgersmike

+0

@RutgersMike,我想知道是否有人會對標題進行評論。 – davidethell

回答

1
<?php 

$file = 'http://www.google.com'; 
$doc = new DOMDocument(); 
@ $doc->loadHTML(file_get_contents($file)); 

$element = $doc->getElementsByTagName('span'); 

if (0 != $element->length) 
{ 
    $content = trim($element->item(0)->nodeValue); 
    if (empty($content)) 
    { 
     $content = trim($element->item(0)->textContent); 
    } 
    echo $content . "\n"; 
} 

?> 
+1

您爲$ file的值錯了,您指定了$ DOCUMENT_ROOT,然後將該URL放到Google中,所以我將其更改爲僅用於Google的URL,並且還更改了loadHTMLFile )到loadHTML(),它將使用file_get_contents()獲取的內容,從而Google的HTML。 –

+0

if i echo out @ $ doc-> loadHTML(file_get_contents($ file));它返回「1」,但爲了讓它通過DOM節點搜索,沒有去。 。 – Shawn

+1

您應該將error_reporting轉爲E_ALL,因爲我認爲您沒有啓用它,因爲否則上述操作會爲您生成錯誤。 –

0

不是100%肯定的,但不需要在php.ini中啓用allow_url_fopen這個工作?

代碼刪除

+0

allow_url_fopen不是PHP指令的函數,那麼爲什麼你要使用function_exists()呢? –

+0

只是一個建議,我猜我不正確。似乎在我的測試中工作。不需要啓用該指令嗎? –

+0

是的,它需要是,默認設置是打開的。 –