XPATH - 正确吗?

时间:2012-04-17 18:59:17

标签: xpath

我正在使用以下xpath来获取如下图所示的部分(http://advrider.com/forums/),但我不是。这有什么问题吗?

//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";
    }
  }
}

?>

4 个答案:

答案 0 :(得分: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 :(得分:1)

我会用这个:

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

<强> Cantor Pairing

答案 2 :(得分:0)

您可以尝试以下xpath:

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

它会找到页面中的所有部分。

答案 3 :(得分:-1)

要抓取部分详细信息文本或网址,请使用以下xpath

var arr = [{
"ID": {
    "name":"Allan" ,
    "sid":"1"
},
"Country": "India",
"Value1": "100",
"Value2": "200"},{
"ID":  {
    "name":"Brian" ,
    "sid":"2"
},
"Country": "China",
"Value1": "230",
"Value2": "800"}];