2016-07-22 101 views
0

我想在特定網站中找到DOM中的元素。 DOM內部有一個名爲「cufon」的標籤。 假設URL爲http://www.xyzw.com/ 我使用的代碼如下:使用PHP遍歷DOM

$dom = new DOMDocument(); 
@$dom->loadHTMLFile('http://www.xyzw.com/'); 
$teams = $dom->getElementById('cufon'); 

在這一點上$隊VAR假設包含所有的DOM內的Cufón的元素,但它包含什麼,如果我試圖找到「div」元素它確實找到了一切。 問題是什麼?

+0

cufon是否添加'javascript'? – atoms

+0

不,因爲我看到它在頁面中固定。 – user3601251

+0

有一個叫做cufon的標籤,還有一個id = cufon的div? – RamRaider

回答

1

如果您像說的那樣存在一個名爲cufontext的TAG,那麼嘗試使用一個ID查找節點集合將只返回一個元素(ID需要是唯一的),因此您可能想要查找指定的所有元素標籤名??

$dom = new DOMDocument(); 
$dom->loadHTMLFile('http://www.xyzw.com/'); 
$teams = $dom->getElementsByTagName('cufontext'); 
if($teams){ 
    foreach($teams as $team){ 
     /* do stuff */ 
    } 
} 

由於我們沒有得到參與實際的URL我只好來測試像這樣: -

/* random url - just happened to be open in browser just now */ 
$url='http://www.interparcel.com/'; 

/* the tag to search for */ 
$tag='div'; 


$dom = new DOMDocument(); 
$dom->loadHTMLFile($url); 
$teams = $dom->getElementsByTagName($tag); 

/* As pointed out by @Pieter it would have always returned true so additional check */ 
if($teams && $teams->length > 0){ 
    foreach($teams as $team){ 
     echo $team->nodeValue; 
    } 
} 

這將從遠程URL吐出大量的內容 - 因此,如果您不能找到一個名爲cufontext的標籤我會建議確認是否有該名稱的標籤

+0

您的if語句是不必要的,因爲'getElementsByTagName()'將始終返回一個'DOMNodeList'對象。 – Pieter

+0

我試過了,沒有成功。 – user3601251

+0

當然有一個名爲cufontext的標籤。我和你一樣嘗試,仍然沒有結果。不知道爲什麼PHP選擇器無法找到cufontext元素。 – user3601251