php专区

 首页 > php专区 > PHP应用 > 常用功能 > PHP数据采集程序采集天气网数据实例演示 - php高

PHP数据采集程序采集天气网数据实例演示 - php高

分享到:
【字体:
导读:
          前言:我们在写一个Web程序的时候,总会想着把自己的网站更美观一些,功能能更多一些,有时候写一些小的工具或者加上小的插件会让我们的站点更加完善,比如万年历功能,比如我们现在要...

PHP数据采集程序采集天气网数据实例演示

前言:我们在写一个Web程序的时候,总会想着把自己的网站更美观一些,功能能更多一些,有时候写一些小的工具或者加上小的插件会让我们的站点更加完善,比如万年历功能,比如我们现在要讲的天气预报功能.

当然我们没法利用专业的卫星接受数据,所以我们的天气数据来自现有的天气预报网站,利用天气预报网站提供的数据服务,我们可以写一个PHP爬虫,然后动态采集我们所需要的数据,并且在目标站点更新数据的时候,我们的程序也能做到同步更新,自动地获取数据.

下面就介绍一下如何编写一个简单的PHP数据采集程序(PHP爬虫)。

原理:给定一个网页的URL,使用PHP下载该网页并得到网页内容,然后通过正则表达式将其中我们感兴趣的数据提取出来,然后输出.

具体在这个例子中,我们要抓取的网页是 http://www.天气网com.cn/weather/101050101.shtml,我们感兴趣的是页面中的未来7天天气情况.

实现:0.获取天气预报网页的URL,代码如下:

$url = "http://www.天气网com.cn/weather/101050101.shtml";

$page_content = file_get_contents($url);

在这里,file_get_contents() 函数会将 $url 指向的网页下载下来,并把网页内容作为一个字符串返回,于是,$page_content 变量中就是我们要抓取的网页的全部HTML代码了,接下来,我们要从其中抽取我们需要的数据.

1.使用正则表达式匹配符合条件的字符串

先输出 $page_content 的值,然后查看网页源代码,观察可知我们需要的字符串可以在

......

这两行的注释里找到,使用正则表达式来取得 之间的所有内容,代码如下:

eregi("(.*)",$page_content,$res);

2.补全页面中图片的路径

由于远程网页中的图片路径都是像 /m2/i/icon_weather/29x20/d01.gif 这样的相对路径,我们需要把这些路径补全,在它们前面加上 http://www.天气网com.cn,代码如下:

$forecast = str_replace("

至此,$forecast 中就是我们需要的天气预报信息了,这个简单的PHP爬虫也就写好了.

源代码:以下是这个抓取天气预报小程序的完整源代码,其中添加了一些测量各部分程序运行时间的代码,并可以通过设置 $start 和 $end 的值来控制抓取哪几天的信息,代码如下:

  1. $url = "http://www.天气网com.cn/weather/101050101.shtml"
  2. $t1 = time(); 
  3.      
  4. $page_content = file_get_contents($url); 
  5. $t2 = time(); 
  6.  
  7. $start = 1; 
  8. $end = 3; 
  9.  
  10. if ($end > 7){ 
  11.     echo "超出预报能力范围,请重新设置!"
  12. }else { 
  13.     echo "未来".($end-$start)."天哈尔滨的天气预报(" 
  14.               .date('Y-m-j')."发布)"
  15.  
  16.     eregi("--day $start--(.*)--day $end--"$page_content$res); 
  17.  
  18.     $forecast = str_replace("", 
  19.         "http://www.天气网com.cn", $res[0]); 
  20.     $t3 = time(); 
  21.  
  22.     echo $forecast
  23.  
  24.     echo 'First step costs '.($t2 - $t1).' ms.'
  25.     echo 'Last step costs '.($t3 - $t2).' ms.'
分享到:
shell 脚本检查某目录下php文件语法 - ph...
shell 脚本检查某目录下php文件语法 利用php的自带检查文件方法 php -l 来使用shell 批量检查某目录下的文件,每次写完脚本都要 php -l 一下,看看有没有发生低级的语法错误,(疏忽过导致事故),写了个简单的shell 脚本批量检查目录下的 php文件语法,代码如下: check_php_syntax.sh    ...
PHP static 静态变量和属性方法使用说明 ...
PHP static 静态变量和属性方法使用说明 变量与其它变量明确区别的,下面我来给各位介绍 static 静态变量和属性方法及静态变量的引用与静态函数的用法,各位有需要了解的同学可参考. 静态变量:变量范围的另一个重要特性是静态变量(static variable),静态变量仅在局部函数域中存在,但当程序执...
  •         php迷,一个php技术的分享社区,专属您自己的技术摘抄本、收藏夹。
  • 在这里……