您好,欢迎访问一九零五行业门户网

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

form:http://www.uphtm.com/php/253.html
这个东西其实我们开发人员来讲常用了,以前做一个抓取其它网站友情连接时用过,今天看到一朋友整理了一个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 length; $i++) {   $href = $hrefs->item($i);   $url = $href->getattribute('href');   echo $url.'
';}这段代码会获取到所有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 length; $i++) {   $href = $hrefs->item($i);   $url = $href->getattribute('href');     // 保留以http开头的链接   if(substr($url, 0, 4) == 'http')      echo $url.'
';}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;$iif(!eregi(://,$regarr[$i][1]))//判断是否是相对路径,即是否还有://    if(substr($regarr[$i][1],0,1)==/)//是否是站点的根目录    echo link.($i+1).:.$site.$regarr[$i][1].
;//根目录    else    echo link.($i+1).:.$base.$regarr[$i][1].
;//当前目录else    echo link.($i+1).:.$regarr[$i][1].
;//相对路径}fclose($fp);?>form:http://www.uphtm.com/php/253.html
以上就介绍了php获取指定url页面中的所有链接,包括了方面的内容,希望对php教程有兴趣的朋友有所帮助。
其它类似信息

推荐信息