最新下载
热门教程
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
PHP获取指定URL页面中的所有链接例子
时间:2022-06-25 02:39:12 编辑:袖梨 来源:一聚教程网
以下代码可以获取到指定URL页面中的所有链接,即所有a标签的href属性:
// 获取链接的HTML代码
$html = file_get_contents('http://www.111com.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.'
';
}
这段代码会获取到所有a标签的href属性,但是href属性值不一定是链接,我们可以在做个过滤,只保留http开头的链接地址:
// 获取链接的HTML代码
$html = file_get_contents('http://www.111com.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.'
';
}
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
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);
?>
相关文章
- 和平精英SS30赛季手册皮肤是什么 和平精英SS30赛季手册皮肤介绍 11-27
- 阴阳师神酿星熊童子技能是什么 阴阳师SP星熊童子技能介绍 11-27
- 原神5.2版本有什么福利 原神5.2版本原石统计介绍 11-27
- 伍六七暗影交锋测试资格怎么获得 11-27
- 王者荣耀S38新赛季前瞻有什么更新 S38版本前瞻直播优化内容介绍 11-27
- 王者荣耀心愿系统升级怎么玩 王者荣耀心愿系统升级活动介绍 11-27