上一篇文章给大家先容了如何利用PHP做一个小型网络爬虫,本日就利用上次爬到的代理IP讲一讲代理IP的验证。至于为什么说PHP是天下上最好的措辞,我也不知道,听别人说的,我个人比较喜好java,往后有机会与大家分享我的学习之路。
我们为什么须要对代理IP进行验证呢?要知道我们在网络中抓到的代理IP数量很大,但能用的每每连十之一二都不到,在利用前剔除掉不能用的IP就能提高我们的事情效率。
首先说说思路:上次我们已经将抓到的IP和端口都放进了我们的MySQL数据表中,要验证肯定须要取出来,然后通过PHP中curl函数设置代理,再访问百度或者其他能访问到的网站,通过返回的状态码是否即是200来判断代理IP是不是可以正常利用的。
由于代码太长,一些不必要的代码就不贴出来了,下面看看curl验证代理IP的核心代码。
//代理IP验证方法 function GetHttpStatusCode($proxy){ $curl = curl_init(); curl_setopt ($curl, CURLOPT_PROXY, $proxy);//利用代理访问 curl_setopt($curl,CURLOPT_URL,\公众http://www.baidu.com\公众);//获取内容url curl_setopt($curl,CURLOPT_HEADER,1);//获取http头信息 curl_setopt($curl,CURLOPT_NOBODY,1);//不返回html的body信息 curl_setopt($curl,CURLOPT_RETURNTRANSFER,1);//返回数据流,不直接输出 curl_setopt($curl,CURLOPT_TIMEOUT,5); //超时时长,单位秒 curl_exec($curl); $rtn= curl_getinfo($curl,CURLINFO_HTTP_CODE); curl_close($curl); return $rtn; }
调用GetHttpStatusCode(代理IP地址:端口)方法就能返回该代理IP在访问百度首页时所返回的状态码,在须要的地方对状态码进行判断就能加以利用了。
我在数据表中加入了抓取到代理IP的韶光和代理IP被验证的韶光,已经存活的韶光,这样代理IP的稳定性就一览无余了。
这是验证后的结果,整整100个IP,末了就剩下10个旁边,看来在利用之前对代理IP进行验证还是很有必要的。