PHP获取指定URL页面中的所有链接例子

以下代码可以获取到指定URL页面中的所有链接,即所有a标签的href属性:

// 获取链接的HTML代码
$html = file_get_contents('http://www.111cn.net');

$dom = new DOMDocument();
@$dom->loadHTML($html);

$xpath = new DOMXPath($dom);
$hrefs = $xpath->evaluate('/html/body//a');

for ($i = 0; $i < $hrefs->length; $i++) {
   $href = $hrefs->item($i);
   $url = $href->getAttribute('href');
   echo $url.'<br />';
}

这段代码会获取到所有a标签的href属性,但是href属性值不一定是链接,我们可以在做个过滤,只保留http开头的链接地址:

// 获取链接的HTML代码
$html = file_get_contents('http://www.111cn.net');

$dom = new DOMDocument();
@$dom->loadHTML($html);

$xpath = new DOMXPath($dom);
$hrefs = $xpath->evaluate('/html/body//a');

for ($i = 0; $i < $hrefs->length; $i++) {
   $href = $hrefs->item($i);
   $url = $href->getAttribute('href');
  
   // 保留以http开头的链接
   if(substr($url, 0, 4) == 'http')
      echo $url.'<br />';
}

fopen()函数读取指定网页中的所有链接并统计出数量,在一些需要采集网页页容的地方,适合使用本代码,本例以读取百度首页为例,找出百度首页中所有的链接地址,代码经过测试,完全可用:

<?
if(empty($url))$url = "http://www.baidu.com/";//需要采集链接的URL地址
$site=substr($url,0,strpos($url,"/",8));
$base=substr($url,0,strrpos($url,"/")+1);//文件所在目录
$fp = fopen($url, "r" );//打开url地址页面
while(!feof($fp))$contents.=fread($fp,1024);
$pattern="|href=['\"]?([^ '\"]+)['\" ]|U";
preg_match_all($pattern,$contents, $regArr, PREG_SET_ORDER);//使用正则匹配所有href=
for($i=0;$i<count($regArr);$i++){//找出所有匹配的链接
if(!eregi("://",$regArr[$i][1]))//判断是否是相对路径,即是否还有://
    if(substr($regArr[$i][1],0,1)=="/")//是否是站点的根目录
    echo "link".($i+1).":".$site.$regArr[$i][1]."<br/>";//根目录
    else
    echo "link".($i+1).":".$base.$regArr[$i][1]."<br/>";//当前目录
else
    echo "link".($i+1).":".$regArr[$i][1]."<br/>";//相对路径
}
fclose($fp);
?>

时间: 2024-09-14 23:25:35

PHP获取指定URL页面中的所有链接例子的相关文章

JS使用ajax方法获取指定url的head信息中指定字段值的方法

 这篇文章主要介绍了JS使用ajax方法获取指定url的head信息中指定字段值的方法,实例分析了Ajax操作URL中head信息的技巧,具有一定参考借鉴价值,需要的朋友可以参考下     本文实例讲述了JS使用ajax方法获取指定url的head信息中指定字段值的方法.分享给大家供大家参考.具体分析如下: 下面的JS代码用来获取ajax_info.txt的head信息中的Last modified属性,最后修改时间 ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 1

url-appcan frame open,引入的URL页面中的元素如何获取

问题描述 appcan frame open,引入的URL页面中的元素如何获取 var titHeight = 0, content = 0; var http, user, upwd, hash_pwd, AppID, AppUserId, AppTID; appcan.ready(function() { titHeight = $('#header').offset().height; content = $('#reply').offset().height; var url = "ht

JS使用ajax方法获取指定url的head信息中指定字段值的方法_javascript技巧

本文实例讲述了JS使用ajax方法获取指定url的head信息中指定字段值的方法.分享给大家供大家参考.具体分析如下: 下面的JS代码用来获取ajax_info.txt的head信息中的Last modified属性,最后修改时间 <!DOCTYPE html> <html> <head> <script> function loadXMLDoc(url) { var xmlhttp; if (window.XMLHttpRequest) {// code

获取页面中的变量-怎样获取asp.net页面中的变量

问题描述 怎样获取asp.net页面中的变量 做了一个类似应答的页面,对方请求这个页面,我获取请求的参数,进行一些后台处理,然后返回一个json字符串,json字符串放在如下的位置 <%@ Page Language="C#" AutoEventWireup="true" CodeFile="requestProcess.aspx.cs" Inherits="_Default" %> <%=strJson %

javascript 获取iframe里页面中元素值的方法

 本篇文章主要是对javascript获取iframe里页面中元素值的方法进行了介绍,需要的朋友可以过来参考下,希望对大家有所帮助 IE方法: document.frames['myFrame'].document.getElementById('test').value;   火狐方法: document.getElementById('myFrame').contentWindow.document.getElementById('test').value;   IE.火狐方法:   代码如

spring mvc-SpringMVC 后台怎么获取前台jsp页面中file中的文件。

问题描述 SpringMVC 后台怎么获取前台jsp页面中file中的文件. 把file中的Excel文件提交,后台该如何获取这个Excel文件. 解决方案 SpringMVC默认是关闭fileupload功能的,开启该能够并验证文件上传,需要做如下几件事情: 第一:打开SpringMVC的文件上传功能: ***-servlet.xml中配置: <bean id="multipartResolver" class="org.springframework.web.mul

如何获取iframe子页面中的所有a标签并替换其中的href参数

问题描述 如何获取iframe子页面中的所有a标签并替换其中的href参数 iframe中的src是其他系统的一个链接,iframe中包含了很多a标签,先需要将a标签中的src批量替换成其他标签,应该如何操作 解决方案 跨域没有?没有用下面的,跨域没搞 <script> function resetUrl(i) { var as = i.contentWindow.document.getElementsByTagName('a'); for (var i = 0, j = as.length

javascript 获取iframe里页面中元素值的方法_javascript技巧

IE方法:document.frames['myFrame'].document.getElementById('test').value; 火狐方法:document.getElementById('myFrame').contentWindow.document.getElementById('test').value; IE.火狐方法: 复制代码 代码如下:     function getValue(){          var tmp = '';          if(docume

JavaScript获取对象在页面中位置坐标的方法_javascript技巧

本文实例讲述了JavaScript获取对象在页面中位置坐标的方法.分享给大家供大家参考,具体如下: <script language="javascript" type="text/javascript" > function getXY(Obj) { var h = Obj.offsetHeight; for (var sumTop=0,sumLeft=0;Obj!=document.body;sumTop+=Obj.offsetTop,sumLeft