很多的网站都使用了URL重定向,这就导致了采集到URL时HTML状态位为302、301的错误。为了避免这个错误,需要判断html头(header) 的信息,当html状态是301或302时,url就不是原来的那个。使用以下的函数可以根据你查询的UR得到真实的URL。再从真实的URL进行采集。<?php
function realurl($hosturl)
很多的网站都使用了URL重定向,这就导致了采集到URL时HTML状态位为302、301的错误。为了避免这个错误,需要判断html头(header) 的信息,当html状态是301或302时,url就不是原来的那个。使用以下的函数可以根据你查询的UR得到真实的URL。
再从真实的URL进行采集。
<?php function realurl($hosturl) { $header = get_headers($hosturl, 1); echo 'html状态:' ; $righturl=''; if( $header[0]=='HTTP/1.0 302 Found'|| $header[0]=='HTTP/1.0 302 Moved Temporarily'|| $header[0]=='HTTP/1.0 301 Moved Permanently'|| $header[0]=='HTTP/1.0 302 Object moved'|| $header[0]=='HTTP/1.1 302 Found'|| $header[0]=='HTTP/1.1 302 Moved Temporarily'|| $header[0]=='HTTP/1.1 301 Moved Permanently'|| $header[0]=='HTTP/1.1 302 Object moved') { $righturl = (strpos($header['Location'],'/')==0) ? $hosturl.$header['Location']: $header['Location']; echo '重定向<br />真实的URL为:'.$righturl; }elseif($header[0]=='HTTP/1.1 200 OK'||$header[0]=='HTTP/1.0 200 OK') { echo '<font color="#666633">200 OK</font>'.'<br />'; $righturl= $hosturl; }else { echo '<font color="#ff0033">'.$header[0].'</font>'; exit('<br />url无法解析'); } if(is_array($righturl)) { $righturl = $righturl[0]; echo 'OK 就是你了'.$righturl; return $righturl; }else { return false; } } //以下为测试 $hosturl = 'http://www.aaaaaa.com/'; realurl($hosturl); /* output html状态:重定向 真实的URL为:http://aaaaaa.com */ ?>
搞定,就是这么简单
评论列表
发表评论
热评文章
相关阅读