首頁  >  文章  >  後端開發  >  PHP获取指定URL页面中的全部链接

PHP获取指定URL页面中的全部链接

WBOY
WBOY原創
2016-06-13 12:18:021053瀏覽

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

form:http://www.uphtm.com/php/253.html

这个东西其实我们开发人员来讲常用了,以前做一个抓取其它网站友情连接时用过,今天看到一朋友整理了一个PHP获取指定URL页面中的所有链接函数,整理过来我们一起来看看吧。

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

  1. // 获取链接的HTML代码
  2. $html = file_get_contents('http://www.111cn.net');
  3. $dom = new DOMDocument();
  4. @$dom->loadHTML($html);
  5. $xpath = new DOMXPath($dom);
  6. $hrefs = $xpath->evaluate('/html/body//a');
  7. for ($i = 0; $i length; $i++) {
  8.    $href = $hrefs->item($i);
  9.    $url = $href->getAttribute('href');
  10.    echo $url.'
    ';
  11. }

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

 

  1. // 获取链接的HTML代码
  2. $html = file_get_contents('http://www.111cn.net');
  3. $dom = new DOMDocument();
  4. @$dom->loadHTML($html);
  5. $xpath = new DOMXPath($dom);
  6. $hrefs = $xpath->evaluate('/html/body//a');
  7. for ($i = 0; $i length; $i++) {
  8.    $href = $hrefs->item($i);
  9.    $url = $href->getAttribute('href');
  10.   
  11.    // 保留以http开头的链接
  12.    if(substr($url, 0, 4) == 'http')
  13.       echo $url.'
    ';
  14. }

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

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

form:http://www.uphtm.com/php/253.html

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn