xpath 笔记

1.contains (): //div[contains(@id, 'in')] ,表示选择id中包含有’in’的div节点

2.text():由于一个节点的文本值不属于属性,比如<a class=”baidu“ href=”http://www.baidu.com“>baidu</a>,所以,用text()函数来匹配节点://a[text()='baidu']

3.last()://div[contains(@id, 'in')][las()],表示选择id中包含有'in'的div节点的最后一个节点

4.starts-with(): //div[starts-with(@id, 'in')] ,表示选择以’in’开头的id属性的div节点

5.not()函数,表示否定,//input[@name=‘identity’ and not(contains(@class,‘a’))] ,表示匹配出name为identity并且class的值中不包含a的input节点。 not()函数通常与返回值为true or false的函数组合起来用,比如contains(),starts-with()等,但有一种特别情况请注意一下:我们要匹配出input节点含有id属性的,写法如下://input[@id],如果我们要匹配出input节点不含用id属性的,则为://input[not(@id)]


小demo

     public function domLoad($url){
libxml_use_internal_errors(true);
$doc = new DOMDocument();
$doc->loadHTMLFile($url);
$xpath = new DomXpath($doc);


$hrefsImg = $xpath->query('//img[contains(@class, "user-img")]');
$user = array();
for ($j = 0; $j < $hrefsImg->length; $j++) {
$trueString = "http://p3.pstatp.com/thumb/";
if(strpos ( $hrefsImg->item($j)->attributes->item(1)->textContent ,  $trueString ) !== false){
$user[$j]['img'] = $hrefsImg->item($j)->attributes->item(1)->textContent;
}
}


$hrefs = $xpath->query('//span[@class="name"]');
for ($i = 0; $i < $hrefs->length; $i++) {
if(isset($user[$i])){
$user[$i]['name'] = mb_convert_encoding($hrefs->item($i)->textContent,  "latin1","UTF-8");
}
}
return $user;
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值