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

王朝学院·作者佚名  2016-05-25
窄屏简体版  字體: 小  |  中  |  大  |  超大  

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 < $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);?>form:http://www.uphtm.com/php/253.html

 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
© 2005- 王朝網路 版權所有 導航