2012-04-17 29 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,则应该使用小写来标记标签名称。 – 2012-04-17 19:14:38

+0

@slanec - 我正在使用PHP,现在我会提供代码,如果你可以看一看,那很好。 – 2012-04-17 19:26:18

+0

@slanec - 还有一件事,我如何检查ff11? – 2012-04-17 19:26:47

回答

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

使用,并尽量避免像TD的地方[2]/DIV [1]/A [1]。 具有类的选择器比DOM树中具有数字位置的选择器更脆弱。

我希望这会帮助

-1

中把握的部分细节的文字或链接,请使用以下的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

感谢提供花花公子:) – Sebachtian 2016-12-27 20:25:49

0

你可以试试下面的XPath:

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

它会发现在页面中的所有部分。