我想获得链接“http://www.w3schools.com/default.asp”&amp;来自此网页的“http://www.google.com”。我希望<a>
内有<div class="link">
个标记的链接,此页面中还有许多其他<a>
标记,我不想要它们。我怎样才能检索特定的链接?任何人都可以帮助我吗?
<div class="link">
<a href="http://www.w3schools.com/default.asp">
<h4>W3 Schools</h4>
</a>
</div>
<div class="link">
<a href="http://www.google.com">
<h4>Google</h4>
</a>
</div>
答案 0 :(得分:5)
使用诸如DOMDocument之类的DOM解析器来实现此目的:
$dom = new DOMDocument;
$dom->loadHTML($html); // $html is a string containing the HTML
foreach ($dom->getElementsByTagName('a') as $link) {
echo $link->getAttribute('href').'<br/>';
}
输出:
http://www.w3schools.com/default.asp
http://www.google.com
更新:如果您只想要特定<div>
内的链接,可以使用XPath表达式查找div中的链接,然后循环显示它们获取href
属性:
$dom = new DOMDocument;
$dom->loadHTML($html);
$xpath = new DOMXPath($dom);
$links_inside_div = $xpath->query("//*[contains(@class, 'link')]/a");
foreach ($links_inside_div as $link) {
echo $link->getAttribute('href').'<br/>';
}
答案 1 :(得分:1)
$dom = new DOMDocument;
$dom->loadHTML($html);
foreach ($dom->getElementsByTagName('a') as $node)
{
echo $node->nodeValue.': '.$node->getAttribute("href")."\n";
}
答案 2 :(得分:1)
您可以使用snoopy PHP类。 Snoopy是一个模拟Web浏览器的PHP类。它自动执行检索网页内容和发布表单的任务http://sourceforge.net/projects/snoopy/
否则尝试使用Jquery
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js">
<script type="text/javascript">
$( document ).ready(function() {
$( ".link a" ).each(function( index ) {
var link = $( this ).attr("href") );
alert(link );
});
});
</script>
您也可以使用此链接获取所有链接(javascript)
var list = document.getElementsByTagName("a");