获取历史上的今天方法

php thinkphp php 1819      收藏
如何获取历史上的今天,本文将讲述如何从其他网站将数据抓取到,并且在自己的网站中加入历史上的今天功能。

如何获取历史上的今天,本文将讲述如何从其他网站将数据抓取到,并且在自己的网站中加入历史上的今天功能。

如图是获取到的历史上的今日的列表。具体样式可以自己调节。

自学php博客

获取步骤:

首先是找到一个拥有比较全的“历史上的今天”的网站,研究其源代码,找出其代码规律。

本文选择的是http://www.todayonhistory.com/网站,其源代码效果如图:

自学php博客

从图中的源代码可以看出,其规律是id为container的ul标签下面,然后是里面的class为a的div标签中的a标签内容。

找出其中的规律之后,我们需要一个专门用来匹配html代码的工具simple_html_dom.php,可以通过这个simple_html_dom.php类来解析html文档,对其中的html元素进行操作 (PHP5+以上版本)。simple_html_dom.php文件下载地址是:http://pan.baidu.com/s/1pL6fknD

下载好simple_html_dom.php类文件之后,我们可以自定义php程序来抓取历史上的今天数据。

代码如下:php代码下载地址:http://pan.baidu.com/s/1slAeOTB

function getHistoryInfo(){

include_once('simple_html_dom.php');

try {

$url = "http://www.todayonhistory.com/";

$html_analysis = file_get_html($url);

if (!isset($html_analysis)){

$html_analysis->clear();

return "获取失败,请刷新重试";

}else{

$contentStr = "历史上的".date("m")."月".date("d")."日:\n";

$contentStr .=' ';

foreach($html_analysis->find('ul[id="container"] div[class="t"] a') as $item) {

$contentStr .= str_replace(date("m")."月".date("d")."日","",$item->plaintext)."\n";

$contentStr .=' ';

if (strlen($contentStr) > 2000){break;}

}

$html_analysis->clear();

return trim($contentStr);

}

}catch (Exception $e){

}

}

$history=getHistoryInfo();

$history_list=explode(' ',$history);

$html='';

foreach($history_list as $k => $v){

$html.=$v;

$html.='
';

}


?>

echo $html;

?>



代码运行效果实例如下