Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Dom 用于解析html标记的xpath查询_Dom_Xpath_Html Parsing - Fatal编程技术网

Dom 用于解析html标记的xpath查询

Dom 用于解析html标记的xpath查询,dom,xpath,html-parsing,Dom,Xpath,Html Parsing,我需要使用xpath查询解析以下示例html <td id="msgcontents"> <div class="user-data">Just seeing if I can post a link... please ignore post <a href="http://finance.yahoo.com">http://finance.yahoo.com</a> </div> </td> <td id

我需要使用xpath查询解析以下示例html

<td id="msgcontents">
 <div class="user-data">Just seeing if I can post a link... please ignore post
  <a href="http://finance.yahoo.com">http://finance.yahoo.com</a>
 </div>
</td>

<td id="msgcontents">
 <div class="user-data">some text2...
  <a href="http://abc.com">http://abc.com</a>
 </div>
</td>

<td id="msgcontents">
 <div class="user-data">some text3...      
 </div>
</td>

可能是以下情况:

   $remote = file_get_contents('http://www.sitename.com');
    $dom = new DOMDocument();
    //Error suppression unfortunately, as an invalid xhtml document throws up warnings.
    $file = @$dom->loadHTML($remote);

    $xpath = new DOMXpath($dom);

    //Get all data with the user-data class.
    $userdata = $xpath->query('//*[contains(@class, \'user-data\')]');

    //get links
    $links = $xpath->query('//a/@href');
因此,要访问其中一个变量,需要使用
nodeValue

$ret = array();
foreach($userdata as $data) {
  $ret[] = $data->nodeValue;
}
编辑:我想我应该提到,这将获得给定页面上的所有链接,我想这是您想要的吗?

使用

concat(/td/div/text[1], ' ', /td/div/a)

您可以使用任何分隔符来代替上面的“”,无论您希望在两个字符串之间出现什么分隔符。

(1)您可以使用“代码”按钮缩进HTML代码,以便它以尖括号呈现,而不会弄乱它。(2) 您的问题是不明确的,因为href属性与锚文本具有相同的值,并且您没有澄清您要查找的是哪一个。(3) HTML不一定是有效的XML,因此请理解,除非您可以将所有HTML转换为有效的XML,否则使用XPATH(需要XML)可能不是一条空闲路线。选择此类
div
元素的XPATH是
/HTML/body/table/tr/td/div[@class='user-data']
。然后需要每个节点的字符串值。这取决于宿主语言的DOM方法。非常感谢。。我试过你的解决办法,但没有得到结果。我已经编辑了这个问题。请复习一下。
concat(/td/div/text[1], ' ', /td/div/a)