2015-09-04 72 views
2

希望我不打扰你关于同一个旧主题的另一个问题。似乎无法弄清楚。使用Xpath和Php获取链接的href属性

只想提前说声谢谢!

我一直在阅读的问题,试图找出如何获得在外部网页上找到的链接的href属性。

下面是一个例子页我试图使用XPath解析:

http://www.shazam.com/track/234782921/lean-on

我想要得到的是在以下列表中href属性只有第一个元素:

<a href="https://www.youtube.com/watch?v=YqeW9_5kURI" class="vd-box vd-play"><span></span></a>

FROM

<div id="trackVideos" class="panel__body"> 
 
    <ul class="vd-list"> 
 
    <li class="vd-elm" data-beacon="{&quot;type&quot;: &quot;videoclick&quot;}"> 
 
     <div class="vd-box" style="background-image: url(https://i.ytimg.com/vi/YqeW9_5kURI/hqdefault.jpg);filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src=https://i.ytimg.com/vi/YqeW9_5kURI/hqdefault.jpg,sizingMethod=scale);"></div> 
 
     <a href="https://www.youtube.com/watch?v=YqeW9_5kURI" class="vd-box vd-play"><span></span></a> 
 
     <div class="vd-data"> 
 
     <p class="vd-title">Major Lazer &amp; DJ Snake - Lean On (feat. MØ) (Official Music Video)</p> 
 

 
     <p class="vd-details">484,920,908 <span>views</span> 
 
     </p> 
 
     </div> 
 
    </li> 
 
    
 
    <li>SECOND LI</li> 
 
    <li>THIRD</li> 
 

 
    </ul> 
 

 
</div>

这是我的尝试:

foreach ($xpath->query("//ul[@class='vd-list']/li[1]/a/@href") as $attr) { 
 
    
 
    $link = $attr->value; 
 
    
 
    echo $link; 
 
}

回答

1

我不知道,如果答案是正确的,我给你,但我认为在foreach中设置变量$link,您始终设置它,并且不会出现任何内容...

但是,此代码应该工作:

<?php 

$a = '<div id="trackVideos" class="panel__body"> 
    <ul class="vd-list"> 
    <li class="vd-elm" data-beacon="{&quot;type&quot;: &quot;videoclick&quot;}"> 
     <div class="vd-box" style="background-image: url(https://i.ytimg.com/vi/YqeW9_5kURI/hqdefault.jpg);filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src=https://i.ytimg.com/vi/YqeW9_5kURI/hqdefault.jpg,sizingMethod=scale);"></div> 
     <a href="https://www.youtube.com/watch?v=YqeW9_5kURI" class="vd-box vd-play"><span></span></a> 
     <div class="vd-data"> 
     <p class="vd-title">Major Lazer &amp; DJ Snake - Lean On (feat. MØ) (Official Music Video)</p> 

     <p class="vd-details">484,920,908 <span>views</span> 
     </p> 
     </div> 
    </li> 

    <li>SECOND LI</li> 
    <li>THIRD</li> 

    </ul> 

</div>'; 

$xpath = simplexml_load_string($a); 

foreach ($xpath->xpath("//ul[@class='vd-list']/li[1]/a/@href") as $attr) { 
    echo $attr; 
} 

?>