PHP/Python简单实现历史上的今天

2018-06-25 4 条评论 500 次阅读 17 人点赞

 

在网上我们经常会看到各种各样的历史上的今天,所以研究了一下,发现百度百科提供了历史上的今天,如下图:

那么,可不可以把这个页面的数据为我们所用呢?所以使用浏览器的调试工具,发现这个页面请求了一个json文件,如图:

地址是 https://baike.baidu.com/cms/home/eventsOnHistory/06.json 其中06就是月份,而json的内容则是整个6月所有的历史上的今天的数据,因此,我们只需要生成当前的月份,然后通过curl获取数据,然后再显示出来。

原理很简单,下面用PHP和Python 简单实现。

PHP

<?php
// 获得当前月份和日期
$month=date('m',time());
$day=date('d',time());

// 组成链接然后用curl获取数据后json解码下转成文字
$url="https://baike.baidu.com/cms/home/eventsOnHistory/".$month.".json";
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$data=curl_exec($ch);
curl_close($ch);
$json = json_decode($data,true);

// 显示内容
echo '今天是'.date('m/d',time()).'-历史上的今天<br><br>';
// 这里之所以是<=14是因为百度这个历史上的今天只提供15条
for ($x=0; $x<=14; $x++) {
    echo $json[$month][$month.$day][$x]['year'].'年 ';
    echo $json[$month][$month.$day][$x]['title'].'<br>';    
}

最后打印出来效果如图(Demo中的日期会比当前时间晚一天是因为本站服务器在美国,实际时间是服务器时间):

Demo地址: https://www.qingwei.tech/demo/history.php

当然这里没有对内容进行任何的修饰,可以根据自己需要进行修饰。

Python版

ps:本站所有Python如无特殊说明都是Python3

import time
import urllib.request
import json
# 引入time urllib json 模块

# 格式化时间获得月份和日期
month = time.strftime("%m", time.localtime())
day = time.strftime("%d", time.localtime())

# 得到数据
url = "https://baike.baidu.com/cms/home/eventsOnHistory/"+month+".json"
jsons = urllib.request.urlopen(url)
data = json.loads(jsons.read())

# 显示内容
print('今天是'+month+'/'+day+'-历史上的今天:')
print()
var = 0
while var <= 14:  
    print(data[month][month+day][var]['year']+'年 '+data[month][month+day][var]['title']+'')
    var += 1

最后打印出来效果如图:

这里是直接在命令行里运行的效果,最终效果也可以自行调整。

希望本文对你有所帮助~

喜欢这篇文章的话可以扫描下方二维码支持我~

《【小工具】让我帮你百度一下-怒怼“伸手党”》

文章来自清渭技术小站,转载请注明出处

Kiwi

Valar Morghulis

文章评论(4)

  • 爱就爱啦

    从百度点进来的,学习学习,呵呵!

    2018-07-06
  • sdfas

    :rolleyes: :rolleyes: :rolleyes:

    2018-07-05
  • 藏金网

    生活不止眼前的苟且,还有博客和远方的田野!

    2018-07-02
  • 小学生

    借鉴了

    2018-06-25