2012-04-17 2 views
1

Я использую следующий xpath, чтобы получить разделы, указанные на рисунке ниже (http://advrider.com/forums/), но я не являюсь. С этим что-то не так?XPATH - Правильно?

//TABLE/TBODY/TR[@class='dg-forums-level2 dg-align-center']/TD[2]/DIV[1]/A[1] 

enter image description here

Обновлено

<?php 
$BASE_PATH = "../src/"; 

include_once($BASE_PATH . "classes/forumdb.php"); 
include_once($BASE_PATH . "classes/curl.php"); 

$curl = new curl(); 
$html = $curl->get_web_page('http://advrider.com/forums/'); 

$doc = new DOMDocument(); 
$doc->loadHTML($html); 

$xpath = new DOMXpath($doc); 

//$elements = $xpath->query("//TABLE[@class='tborder']/TBODY/TR[@class='']/TD[2]/DIV[1]/A[1]/STRONG[1]"); 

$elements = $xpath->query("//*[@id='f3']"); //works 
//$elements = $xpath->query("//TABLE/TBODY/TR"); 


//TD[@id='f74']/DIV[1]/A[1] 

if (!is_null($elements)) 
{ 

    foreach ($elements as $element) 
    { 
    echo "f<br/>[". $element->nodeName. "]"; 
    $nodes = $element->childNodes; 
    foreach ($nodes as $node) 
    { 
     echo $node->nodeValue. "\n"; 
    } 
    } 
} 

?> 
+3

Ваш XPath хорош, и он хорошо работает на FF11 и FireFinder. Какой инструмент вы используете для извлечения элементов? Вы видите какую-то ошибку? Если вы используете IE, вы должны написать имена тегов в нижнем регистре. –

+0

@slanec - я использую php, я сейчас поставлю код, хорошо, если вы можете взглянуть. –

+0

@slanec - еще одна вещь, как я регистрируюсь в ff11? –

ответ

1
//li[div[@class='nodeInfo categoryNodeInfo categoryStrip' and div/h3/a[text()='Riding']]]//div[@class='nodeText']/h3[@class='nodeTitle'] 

Используйте его и стараются избегать мест, таких как TD [2]/DIV [1]/А [1]. Селекторы с классами менее хрупкие, чем селектор с числовым положением в дереве DOM.

Я надеюсь, что это поможет

-1

Для грейферы в раздел детали текста или URL, пожалуйста используйте их ниже XPath

//h3[@class="nodeTitle"]/a[@data-description]/text() #To grap text 
//h3[@class="nodeTitle"]/a[@data-description]/@href #To grap url 
1

Я хотел бы использовать это:

//*[@class="nodeTitle"]/a 

demo

+0

спасибо за предложение dude :) – Sebachtian

0

Вы можете попробовать ниже XPath:

//ol[@class='nodeList']//*[@class='nodeTitle']//a

Это будет найти все разделы на странице.

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