最近因为工作的原因,需要批量查询网站的标题,主要是网站维护时,怕有的网站被挂码标题被篡改,但是在网上查找批量查标题工具的时候,找不到合适的工具,有的要收费,有了查的很少达不到批量查询网站标题,有的查的不准,没办法,只能自己利用php程序支持自行编写代码来实现批量查询,下面就是代码的查询方法,这里有一个坑,需要注意的是,一般的php小偷程序的抓取都是会乱码的,各种方法试了个遍发现,当时正常了换个网址就不正常了,用各种方法来转码处理,等等,只要一换个网址,就有可能乱码,原因是因为没有对目标页面的代码进行检测
方法一
<?php $url = 'http://demo.zjmainstay.cn/php/curl/simple.html'; $content = file_get_contents($url); echo $content;
方法二
<?php $url = 'http://demo.zjmainstay.cn/php/curl/simple.html'; $ch = curl_init($url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); //返回数据不直接输出 $content = curl_exec($ch); //执行并存储结果 curl_close($ch); echo $content;
一种是file_get_contents方法 一种是curl方法,这里推荐curl,安全好处多
<?php ini_set('max_execution_time', '0'); $arr = array('http://www.mb119.com','http://ywdjw.com/','http://www.whbaxj.com/','https://www.94zc.com'); foreach($arr as $value){//循环上面的 网址数组 如果有很我的网站要查,就按上面格式增加即可 $url = $value; $ch = curl_init($url); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);//取消ssl验证解决https不能访问问题 curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);//取消ssl验证解决https不能访问问题 curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); //返回数据不直接输出 $content = curl_exec($ch); //执行并存储结果 curl_close($ch); $encode = mb_detect_encoding($content, array("ASCII","UTF-8","GB2312","GBK","BIG5")); //检测采集内容是何编码 if($encode != "UTF-8"){ //判断目标如果不是UTF-8就执行下面的内容实现转码 如果是直接输出 本页面保存为 UTF-8模式 $content = mb_convert_encoding($content, 'utf-8','GB2312'); } eregi ("<title>(.*)</title>",$content,$title); echo $value."-------".$title[1]."<br/>"; } ?>
上面代码执行结果(执行过程中会假死很长时间,不要动,等),我测试查询176个网址,用时56秒(php多是60秒执行超时,如果提示超时就减少单次网址查询数量)
上面是附件 点击下载,放到php环境即可,如果有困难联系我们,要是有需求的人多,我就搞个公共查询页面供大家使用
以上就是php小偷程序的坑和实际应用