如今网络上资源很多,站长为了留住用户,一般都有IP限制,每天只能看多少文章下载多少资源,无疑对用户体验非常的不好,为了解决用户想一次看个够却又做不到的问题,写下这篇文章。
很多有点网络经验的朋友都知道,在IP被限制时我们都会采用代理IP的方式进行访问。网络上分享代理IP的网站也特别多,如果你需要大量的IP,手动去复制是非常麻烦的,下面就教大家做一个简单的自动获取IP的服务。
说起网络爬虫大家第一反应就是 Python ,但笔者不会这门语言,就用比较常用的PHP来写吧,当然如果大量的话就不建议使用PHP,毕竟它的能力有限。
首先要知道 爬虫 就是不断的访问你的网页,然后通过各种解析手段取得所需要的内容。我们需要的代理IP只需要IP地址和端口就可以了,其它的所在位置、隐匿性等等不需要就不要抓了。下面是核心代码:
设置PHP运行状态为后台运行。
ignore_user_abort(); // 后台运行
set_time_limit(0); // 取消脚本运行时间的超时上限
$ interval =60*5;// 每隔5分钟运行,这个间隔时间是可以随着 需要进行修改
do{
for($n=1;$n<2;$n++)
{ //抓取 这个网站上的IP内容
$ subject = qwbzj(gethtml(“”.$n.”.html”),”验证时间”,”mypage”);
$pattern = ‘/\d+\.\d+\.\d+\.\d+<\/ td >
preg_match_all($pattern, $subject, $matches);
for ($i= 0;$i< count($matches); $i++)
{
for($j=0;$j
// echo str_replace(“
”;
if(mysqll($protyipss)==1)
{
// echo “成功”;
}else{
// echo “失败”;
} //checkproty($protyipss);
} } } sleep($interval);
// 休眠5分钟
}while(true);
获取网页源码。 使用file_get_contents()函数来获取网页源码,再配合字符串构造一个取文本中间的方法,用来剔除网页中不需要的部分,最后用上面的正则匹配进行匹配。
/** *取文本中间 * */
function qwbzj($str, $leftStr, $ right Str)
{ $left = strpos($str, $leftStr);
//echo ‘左边:’.$left;
$right = strpos($str, $rightStr,$left);
//echo ‘
右边:’.$right;
if($left < 0 or $right < $left) return ”;
return substr($str, $left + strlen ($leftStr), $right-$left-strlen($leftStr));
}
?>
代码中使用了取消浏览器断开即停止程序运行,启动后即使退出浏览器,程序一样会在后台运行。写完后需要在浏览器中访问一次进行启动,访问之后即可关闭退出,不退出你就只能看到它一直在转圈。程序5分钟进行一次抓取,抓取的内容经过重复验证后插入到数据表中。效果如下:
文中代码出现的MySQL语句并没有严格限制,在实际应用中请对MySQL语句的内容进行检查,以免出现注入漏洞。抓取网络中的IP地址到此就结束了,关于代理IP的验证内容太多,下次再讲吧!欢迎关注,收藏。
相关文章
本站已关闭游客评论,请登录或者注册后再评论吧~