加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

PHP实现采集中国天气网未来7天天气

发布时间:2020-12-13 02:04:45 所属栏目:PHP教程 来源:网络整理
导读:《PHP实例:PHP实现采集中国天气网未来7天天气》要点: 本文介绍了PHP实例:PHP实现采集中国天气网未来7天天气,希望对您有用。如果有疑问,可以联系我们。 前言 PHP实例 我们在写一个Web程序的时候,总会想着把本身的网站更美观一些,功能能更多一些,有时候写

《PHP实例:PHP实现采集中国天气网未来7天天气》要点:
本文介绍了PHP实例:PHP实现采集中国天气网未来7天天气,希望对您有用。如果有疑问,可以联系我们。

前言PHP实例

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

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

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

原理PHP实例

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

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

实现PHP实例

0.获取天气预报网页的URL:PHP实例

代码如下:

$url = "http://www.weather.com.cn/weather/101050101.shtml";
$page_content = file_get_contents($url);

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

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

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

代码如下:

<!--day 1 -->
......
<!--day 7 -->

这两行的注释里找到.

使用正则表达式来取得 <!--day 1--> 和 <!--day 7--> 之间的所有内容:
PHP实例

代码如下:

eregi("<!--day 1-->(.*)<!--day 7-->",$page_content,$res);

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

由于远程网页中的图片路径都是像 /m2/i/icon_weather/29x20/d01.gif 这样的相对路径,我们必要把这些路径补全,在它们前面加上 http://www.weather.com.cn.
PHP实例

代码如下:

$forecast = str_replace("<img src="","<img src="http://www.weather.com.cn",$res[0]);

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

源代码PHP实例

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

代码如下:

$url = "http://www.weather.com.cn/weather/101050101.shtml";
$t1 = time();
???
$page_content = file_get_contents($url);
$t2 = time();

$start = 1;
$end = 3;PHP实例

if ($end > 7){
??? echo "超出预报才能范围,请重新设置!";
}else {
??? echo "未来".($end-$start)."天哈尔滨的天气预报("
????????????? .date('Y-m-j')."发布)";PHP实例

??? eregi("--day $start--(.*)--day $end--",$res);PHP实例

??? $forecast = str_replace("<img src="",
??????? "<img src="http://www.weather.com.cn",$res[0]);
??? $t3 = time();PHP实例

??? echo $forecast;PHP实例

??? echo 'First step costs '.($t2 - $t1).' ms.';
??? echo 'Last step costs '.($t3 - $t2).' ms.';
}
PHP实例

其他应用例子PHP实例

同样的思路可以测验考试的有:NBA每天的比分牌、今日哈工大的新闻同步、股市行情等等.都能实现同步实时更新.暂时只想到这些,欢迎大家拍砖~PHP实例

欢迎参与《PHP实例:PHP实现采集中国天气网未来7天天气》讨论,分享您的想法,编程之家 52php.cn为您提供专业教程。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读