首页 > php/ 网络技术/ 软件心得 > 巧用谷歌Reader订阅最新春运信息

巧用谷歌Reader订阅最新春运信息

又快到了一年一次的人类大迁移啦,怎样掌握最新的票务信息时当前每一个想回家的人最想做的事情,之前跟我同住的同事用自己的电脑wGet监控回家的飞机票信息,如果有打折机票就使用飞信接口自动发送到自己的手机上~

快到放寒假的时候,有些学生没有订票或者要自己去车站买票,可是不知道什么时候开始发售20天车票,今天我突发奇想,想用php抓取某一火车站的公告(以福州火车站为例)自动生成Rss,可以使用谷歌Reader订阅,甚至可以使用飞信的PHP接口发送最新的消息到自己的手机,这是一个思想,以后要有什么事情可以巧用谷歌Reader啦~(*^__^*) 嘻嘻……~挺聪明的方法~自己夸一夸~

言归正传,下面开始用php来写一个抓取火车站公告,并且自动生成RSS的php程序

原理分析

使用cURL(cURL用法详解请查阅文章《cURL常用的几个PHP函数》)请求网页,使用PHP的正则匹配来匹配出想要的最新公告链接地址,以及公告信息的文章名称。然后使用一个PHP类RSS.class.php(详细用法以及下载地址,请查阅文章《PHP生成RSS类:RSS.class.php》)生成Rss文件。
使用google Reader订阅这个php地址就可以啦。

抓取以及正则匹配部分代码

首先感谢公司的同事吴昊,帮我写的正则匹配代码,本人这方面很菜的哦~O(∩_∩)O哈哈~
请求的地址为福州火车站的公告信息,地址为:http://www.fzhcz.com/noticelist.asp
代码如下:

<?php
$search_url='http://www.fzhcz.com/noticelist.asp';
$ch=curl_init();
curl_setopt($ch, CURLOPT_URL,$search_url) ;
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);//设置返回值
$returnPage=curl_exec($ch);
curl_close($ch);
  //<li><span>[2009年12月16日]</span><a href="notice.asp?id=114">关于12月20日起增开五趟动车组列车的通知</a> </li>
//开始正则匹配,原网址采用GB2312编码,进行UTF-8转码
if($j = preg_match_all('/<li><span>\[([^\]]*)\]<\/span><a\shref=\"([^\"]*?)\">([^<]*)<\/a>[^<]*<\/li>/is',iconv('gb2312','utf-8',$returnPage),$matchResult,PREG_SET_ORDER))
  for($i=0;$i<$j;$i++)
    { //显示匹配结果,文章名称、链接地址
        echo $matchResult[$i][1].'-->'.$matchResult[$i][2].'-->'.$matchResult[$i][3]."\n";
    }
?>

这样就显示出文章的地址以及文章的名称。

使用PHP生成Rss订阅文件

此处采用PHP类:RSS.class.php来轻松的完成RSS订阅功能,代码如下:

<?php
include_once("class/RSS.class.php");
$RSS= new RSS("福州车站最新公告","http://www.fzhcz.com/noticelist.asp","订阅福州火车站最新公告,程序由2Fool.cn提供,地址:http://js8.in");
 
if($j = preg_match_all('/<li><span>\[([^\]]*)\]<\/span><a\shref=\"([^\"]*?)\">([^<]*)<\/a>[^<]*<\/li>/is',iconv('gb2312','utf-8',$returnPage),$matchResult,PREG_SET_ORDER))
  for($i=0;$i<$j;$i++)
    {
        $name=$matchResult[$i][3];
        $url=$matchResult[$i][2];
        $desc=$matchResult[$i][1]."最新消息:".$matchResult[$i][3];
        $RSS->AddItem($name,$url,$desc,$matchResult[$i][1]);
       // echo $matchResult[$i][1].'-->'.$matchResult[$i][2].'-->'.$matchResult[$i][3]."\n";
    }
$RSS->Display();
?>

这样子就可以实现了Rss订阅功能啦~最终代码为:

<?php
$search_url='http://www.fzhcz.com/noticelist.asp';
$ch=curl_init();
curl_setopt($ch, CURLOPT_URL,$search_url) ;
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);//设置返回值
$returnPage=curl_exec($ch);
curl_close($ch);
include_once("class/RSS.class.php");
$RSS= new RSS("福州车站最新公告","http://www.fzhcz.com/noticelist.asp","订阅福州火车站最新公告,程序由2Fool.cn提供,地址:http://js8.in");
 
if($j = preg_match_all('/<li><span>\[([^\]]*)\]<\/span><a\shref=\"([^\"]*?)\">([^<]*)<\/a>[^<]*<\/li>/is',iconv('gb2312','utf-8',$returnPage),$matchResult,PREG_SET_ORDER))
  for($i=0;$i<$j;$i++)
    {
        $name=$matchResult[$i][3];
        $url=$matchResult[$i][2];
        $desc=$matchResult[$i][1]."最新消息:".$matchResult[$i][3];
        $RSS->AddItem($name,$url,$desc,$matchResult[$i][1]);
       // echo $matchResult[$i][1].'-->'.$matchResult[$i][2].'-->'.$matchResult[$i][3]."\n";
    }
$RSS->Display();
?>

PHP文件测试地址为:http://love.2fool.cn/fuzhouchezhan.php

Google Reader订阅

打开Google Reader:http://www.google.com/reader,点击“添加订阅”,输入自己编写的PHP网址就可以啦。如:http://love.2fool.cn/fuzhouchezhan.php,点击添加就可以啦~

添加订阅的Rss地址

添加订阅的Rss地址

最终订阅的效果显示

最终订阅的效果截图

当然你也可以使用其他的订阅器,并且可以发送到自己的邮箱去。

PS:本方法主要是提出一种解决问题的方法~希望可以启发大家开发出更有趣的工具,想出更好地方法

相关文章

"巧用谷歌Reader订阅最新春运信息"已有0条评论
  1. 还没有评论呢,赶紧抢沙发!
文明发言,你好我也好
正在提交,请稍后...
返回顶部