很多时候由于时间不够,或者价值不大,很多站长手上的站并没有花时间去维护,那么放着一个站很是浪费,于是就有了小偷程序,就是盗取别人网站的内容,然后显示在自己的网站上。感觉上和采集差不多,但是还是有区别的。
1、小偷程序是实时的,不像采集,是必须有采集的步骤才行。
2、小偷程序并不保存内容,只是显示的别人网站的内容。
简单来看一下怎么用php制作一个小偷程序,本文中是使用php的file_get_contents函数,另外还有file、readfile函数都可以采集。当然还有更加强大的cURL函数,可以调用处理很多交互的数据,本文就不介绍了,大家可以自行学习。
$file=file_get_contents(“http://www.weather.com.cn/weather/101010100.shtml“);
实现步骤
①获取页面内容
使用php函数$str=file_get_contents("url");读取目标站点网页内容并赋值给$str变量
②通过正则表达式函数eregi匹配出需要的内容
eregi("正则表达式","匹配的字符串$str","返回值");
③查找和替换一些内容
使用$str2=str_replace("被替换的字串","替换成的字串","原字符串");
使用字符串替换函数,可以替换字符串中的内容以及文件路径等。
④输出结果到网页中
echo $str2;
下面以获取天气预报小偷程序来作为示例,来自藏章博客
天气的远程地址是:http://www.weather.com.cn/weather/101010100.shtml ,现在我们要的是 “北京 逐6小时精细化预报 ( 2012-09-08 08 :00发布)”这块里面的东西,为了样式不受破坏,我们首先把head里面的内容截取出来
$file=file_get_contents(“http://www.weather.com.cn/weather/101010100.shtml“);
eregi(“<head>(.*)</head>”, $file,$head); //截取字符串放在$head
echo “<html><head>”; //添加上少了的标签
print_r($head[1]); //显示出截取的内容
echo “</head>”; // 补充head标签
echo “<body><center>”;//补充body开始标签,和使用center来显示居中
现在我们要显示body里面的内容了
我们通过分析网页结构,知道“<div class=\”jxyb\”>”是我们想要的那一块的开始位置,所以我们的正则表示是
eregi(“<div class=\”jxyb\”>(.*)</a></b></td>”, $file,$body);
为什么不是用是</div>来结束,获取中间的内容呢,因为网页里面有很多的div我们需要找到一个唯一确定的字符串来截取,这样内容就基本获取完了,我们要最的就是把漏掉的标签补充上。
print_r($body[1]); echo “</a></b></td> </tr> </table> </div>”;
echo “</body></html>”;
到现在为止:我们的程序就完成了。
完整的程序代码:
<?php
$file=file_get_contents("http://www.weather.com.cn/weather/101010100.shtml");
eregi("<head>(.*)</head>", $file,$head);
echo "<html></head>";
print_r($head[1]);
echo "</head>";
echo "<body><center>";
echo "<div class=\"jxyb\">";
eregi("<div class=\"jxyb\">(.*)</a></b></td>", $file,$body);
print_r($body[1]);
echo "</a></b></td>
</tr>
</table>
</div>";
echo "</body></html>";
?>