Java爬虫实践之获取历史上的今天

概述

我们可以在一些网站上看到一些文字,显示了历史上的今天发生了什么事情。例如CSDN的登录页面:
在这里插入图片描述而我们今天的目标是百度搜索上显示的历史上的今天,如下:

(注:图片无法显示)

通过历史上的今天访问查看

我们需要获取“历史上的今天”的所有事件,然后可以把这些数据显示在自己的网站上,就可以给自己网站上也增加一个“历史上的今天”的功能。

准备

要想使用这个爬虫,需要如下知识:

  • hutool的hutool-http模块
  • Gson
  • Jsoup

其中hutool-http模块需要用来发送HTTP请求,请求URL,返回服务器的响应结果;而Gson用来处理json格式的字符串数据;Jsoup可用来处理html格式的内容。

分析

爬虫从来不是一上来就写代码的,最重要的是分析请求,如何获取到有效的信息,而最后才是写代码,只要爬取的思路理清楚后,代码是很容易完成的。

第一步,打开百度搜索关键字历史上的今天

(注:图片无法显示)

第二步,我们要看浏览器如何请求到“历史上的今天”这些数据的,按F12打开Network面板,然后刷新浏览器,查看请求。
在这里插入图片描述
发现通过如下的URL即可请求到“历史上的今天”的页面内容,返回的是html源码内容。

Request URL: https://www.baidu.com/s?ie=utf-8&f=8&rsv_bp=1&rsv_idx=1&tn=baidu&wd=%E5%8E%86%E5%8F%B2%E4%B8%8A%E7%9A%84%E4%BB%8A%E5%A4%A9&fenlei=256&rsv_pq=a2dbc7d900047768&rsv_t=0c6ckpvpgFs4uKd8Xon5m%2FKW%2B4EZcnObkZ4N4A%2BBwxZNXkHgcrSoxlVwj20&rqlang=cn&rsv_enter=1&rsv_dl=ib&rsv_sug3=15&rsv_sug1=16&rsv_sug7=101
Request Method: GET
Status Code: 200 OK

也就是说我们要寻找的数据就在请求响应回的html源码内容中,但源码内容太多了,眼睛很难以找到,所以我们在Response面板的html源码内容中搜索上面显示的历史上的今天的关键字,例如搜索关键字"德国著名飞行员"。

在这里插入图片描述

发现共匹配到4个,在Response面板中查看html源码感觉还是不太方便,在页面按鼠标右键查看页面源码。
发现搜索到的结果有两种情况:
在这里插入图片描述

  • 第一种,结果隐藏在html注释中的json字符串中。
    在这里插入图片描述
  • 第二种,结果在html标签中,需要提取。
    在这里插入图片描述发现json字符串中的数据更加完整,更加方便提取。
    我们先把这段json格式的字符串复制到JSON可视化网站上查看。
    在这里插入图片描述打开"视图"选项卡,以树形视图查看在这里插入图片描述

其中date字段表示今天的日期,而cardList则是“历史上的今天”所有事件。cardList是一个数组,数组中每一项都是一个对象,cardList.yearTag表示事件的年份,cardList.url则是该事件的百度百科链接,cardList.titleTip是该事件的完整标题名称,cardList.title是标题简称,cardList.textTip是该事件的完整内容,cardList.text是事件内容摘要,cardList.image是该事件的图像。

我们发现上面的请求URL的参数太多了,我们可以尝试减少一些无用的参数,最后得到更加简洁的URL:

Request URL: https://www.baidu.com/s?wd=历史上的今天
Request Method: GET
Status Code: 200 OK

从上面的分析我们已经能得到我们需要的数据了,步骤如下:

  • 第一步,发送GET请求,注意携带请求头,响应返回html页面内容。
  • 第二步,从html页面内容中提取出藏有关键数据的json字符串。
  • 第三步,从json字符串中解析出我们需要的数据。

代码

通过上面的分析,我们很容易就可以写出代码。

注意,上面的分析跟编程语言,爬虫既可以用python写,也可以用Java来写。而我这里提供的仅仅是Java代码,当然也可以根据上面的分析写一份python代码。

代码如下:

public class Crawler {
    
    
    public static void main(String[] args) {
    
    
        // 第一步,拼接URL
        String url = "https://www.baidu.com/s?ie=UTF-8&wd=历史上的今天";
        // 设置请求头
        Map<String, String> headers = new HashMap<>();
        headers.put("User-Agent", " Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/93.0.4577.63 Safari/537.36");

        // 第二步,发送请求,获取响应,响应内容为html源码内容
        String htmlContent = HttpRequest.get(url).headerMap(headers, true).execute().body();

        // 第三步,提取html源码中的有效信息,是json字符串隐藏在注释中
        int beginIndex = htmlContent.indexOf("<!--s-data:") + 11;
        int endIndex = htmlContent.indexOf("true}-->") + 5;
        String jsonContent = htmlContent.substring(beginIndex, endIndex);

        // 第四步,使用Gson解析json字符串
        Gson gson = new Gson();
        JsonObject jsonObject = gson.fromJson(jsonContent, JsonObject.class);
        String today = jsonObject.get("date").getAsString();
        JsonArray cardList = jsonObject.get("cardList").getAsJsonArray();
        if (!cardList.isJsonNull() && cardList.size() > 0) {
    
    
            for (JsonElement jsonElement : cardList) {
    
    
                // 提取json字符串中的有效信息
                JsonObject card = jsonElement.getAsJsonObject();
                String yearTag = card.get("yearTag").getAsString();
                String baikeUrl = card.get("url").getAsString();
                String title = card.get("title").getAsString();
                String textTip = card.get("textTip").getAsString();
                String text = card.get("text").getAsString();
                String image = card.get("image").getAsString();
                System.out.println(yearTag + "\t\t" + baikeUrl + "\t\t" + title + "\t\t" + textTip + "\t\t" + text + "\t\t" + image);
            }
        }
    }
}

打印结果如下:

1999年		https://baike.baidu.com/item/%E8%B5%96%E8%8E%8E%C2%B7%E6%88%88%E5%B0%94%E5%B7%B4%E4%B9%94%E5%A8%83?fr=luckinsearch		前苏联领袖的妻子赖莎·戈尔...		赖莎·戈尔巴乔娃(Раи́са Макси́мовна Горбачёва,又译雷莎·戈巴卓娃,本姓Титаре́нко,19		赖莎·戈尔巴乔娃(Раи́са Макси́мовна Гор...		https://bkimg.cdn.bcebos.com/smart/377adab44aed2e73e840188a8501a18b86d6faef-bkimg-process,v_1,rw_1,rh_1,maxl_800,pad_1?x-bce-process=image/resize,m_fill,w_128,h_128,align_0,limit_0
1993年		https://baike.baidu.com/item/%E5%9F%83%E9%87%8C%E5%B8%8C%C2%B7%E5%93%88%E7%89%B9%E6%9B%BC?fr=luckinsearch		德国著名飞行员埃里希·哈特...		埃里希·哈特曼(Erich·Hartmann)是一位纳粹德国空军的头号王牌飞行员。这位前德国空军战斗机飞行员在第二次世界大战中以352架		埃里希·哈特曼(Erich·Hartmann)是一位纳粹德国空军的头号王...		https://bkimg.cdn.bcebos.com/smart/d52a2834349b033b8965b76e10ce36d3d439bd91-bkimg-process,v_1,rw_1,rh_1,maxl_800,pad_1?x-bce-process=image/resize,m_fill,w_128,h_128,align_0,limit_0
1964年		https://baike.baidu.com/item/%E5%BC%A0%E6%9B%BC%E7%8E%89?fr=luckinsearch		香港电影演员张曼玉出生		张曼玉(Maggie Cheung1964920日—) ,生于香港,祖籍上海,国家一级演员,爱丁堡大学荣誉博士,联合国儿童基金会中国大使。张曼玉是迄今华语影坛获奖最多的电影演员,奖项涵盖十余个国际影展。		张曼玉(Maggie Cheung1964920日—) ,生于香港,祖籍...		https://bkimg.cdn.bcebos.com/smart/42a98226cffc1e178a82206505dae103738da9774306-bkimg-process,v_1,rw_1,rh_1,maxl_800,pad_1?x-bce-process=image/resize,m_fill,w_128,h_128,align_0,limit_0
1957年		https://baike.baidu.com/item/%E8%AE%A9%C2%B7%E8%A5%BF%E8%B4%9D%E6%9F%B3%E6%96%AF?fr=luckinsearch		芬兰著名作曲家让·西贝柳斯...		让·西贝柳斯是芬兰作曲家。他的著名作品《芬兰颂》曾因沙俄禁演而改名《即兴曲》,芬兰独立后才以《芬兰颂》命名。他一生创作了100多部作品,为芬兰音乐开拓了一个新的时代。		让·西贝柳斯是芬兰作曲家。他的著名作品《芬兰颂》曾因沙俄禁...		https://bkimg.cdn.bcebos.com/smart/91529822720e0cf3a35fc68d0546f21fbe09aa18-bkimg-process,v_1,rw_1,rh_1,maxl_800,pad_1?x-bce-process=image/resize,m_fill,w_128,h_128,align_0,limit_0
1950年		https://baike.baidu.com/item/%E4%B8%AD%E5%8D%8E%E4%BA%BA%E6%B0%91%E5%85%B1%E5%92%8C%E5%9B%BD%E5%9B%BD%E5%BE%BD?fr=luckinsearch		中华人民共和国国徽图案正...		中华人民共和国国徽(英语:National Emblem of the People's Republic of China)是中华人民共和国主权的象征和标志。国徽		中华人民共和国国徽(英语:National Emblem of the People's...		https://bkimg.cdn.bcebos.com/smart/50da81cb39dbb6fd52666d670c6fbc18972bd4079915-bkimg-process,v_1,rw_1,rh_1,maxl_800,pad_1?x-bce-process=image/resize,m_fill,w_128,h_128,align_0,limit_0
1946年		https://baike.baidu.com/item/%E6%88%9B%E7%BA%B3%E5%9B%BD%E9%99%85%E7%94%B5%E5%BD%B1%E8%8A%82?fr=luckinsearch		首届戛纳国际电影节在法国...		戛纳国际电影节(英文:Cannes International Film Festival,法文:Festival De Cannes),亦译作康城(坎城)国际电影节,创		戛纳国际电影节(英文:Cannes International Film Festival...		https://bkimg.cdn.bcebos.com/smart/9e3df8dcd100baa1cd1184a9f259ae12c8fcc3ce80c5-bkimg-process,v_1,rw_1,rh_1,maxl_800,pad_1?x-bce-process=image/resize,m_fill,w_128,h_128,align_0,limit_0
1945年		https://baike.baidu.com/item/%E8%8C%83%E5%BE%90%E4%B8%BD%E6%B3%B0?fr=luckinsearch		香港政治人物范徐丽泰出生		范徐丽泰  (1945920日-),本名徐丽泰,香港建制派政治人物,现任港区全国人大代表及常务委员会成员,范徐丽泰早年在香港		范徐丽泰  (1945920日-),本名徐丽泰,香港建制派政治...		https://bkimg.cdn.bcebos.com/smart/810a19d8bc3eb1351f3efb67af1ea8d3fc1f4474-bkimg-process,v_1,rw_1,rh_1,maxl_800,pad_1?x-bce-process=image/resize,m_fill,w_128,h_128,align_0,limit_0
1940年		https://baike.baidu.com/item/%E9%BA%BB%E7%94%9F%E5%A4%AA%E9%83%8E?fr=luckinsearch		日本政治家麻生太郎出生		麻生太郎(1940920-),日本政治家和企业家。出身政治世家,思想意识保守,不识民间疾苦,历史认识模糊,而个性张扬、口		麻生太郎(1940920-),日本政治家和企业家。出身政治世...		https://bkimg.cdn.bcebos.com/smart/03087bf40ad162d9f2d3bb483195beec8a1363276706-bkimg-process,v_1,rw_1,rh_1,maxl_800,pad_1?x-bce-process=image/resize,m_fill,w_128,h_128,align_0,limit_0
1936年		https://baike.baidu.com/item/%E7%8E%8B%E4%BA%9A%E6%A8%B5?fr=luckinsearch		被国民党特务刺杀的王亚樵逝世		王亚樵(18891936),字九光,抗日志士,民族英雄。1889年出生于安徽合肥,自幼读书,聪颖过人,少年时期目睹官吏豪强压榨人		王亚樵(18891936),字九光,抗日志士,民族英雄。1889年出...		https://bkimg.cdn.bcebos.com/smart/35a85edf8db1cb1380a9c5b9d754564e93584b5c-bkimg-process,v_1,rw_1,rh_1,maxl_800,pad_1?x-bce-process=image/resize,m_fill,w_128,h_128,align_0,limit_0
1911年		https://baike.baidu.com/item/%E8%B5%AB%E5%BE%B7?fr=luckinsearch		近代英国侵华代表人物赫德逝世		赫德,英国人,28岁担任大清海关总税务司,掌权长达45年,被清廷视为客卿,在衰朽的旧帝国制度中创造出唯一廉洁不贪腐的高效衙		赫德,英国人,28岁担任大清海关总税务司,掌权长达45年,被清...		https://bkimg.cdn.bcebos.com/smart/5bafa40f4bfbfbed410b0a9578f0f736aec31f8d-bkimg-process,v_1,rw_1,rh_1,maxl_800,pad_1?x-bce-process=image/resize,m_fill,w_128,h_128,align_0,limit_0
1899年		https://baike.baidu.com/item/%E5%88%97%E5%A5%A5%C2%B7%E6%96%BD%E7%89%B9%E5%8A%B3%E6%96%AF?fr=luckinsearch		德裔美国政治哲学家列奥·施...		列奥·施特劳斯(Leo Strauss)是一个争议且传奇的人物。列奥·施特劳斯(Leo Strauss)是一位神秘的政治哲学家。在里根、老布什		列奥·施特劳斯(Leo Strauss)是一个争议且传奇的人物。列奥·...		https://bkimg.cdn.bcebos.com/smart/34fae6cd7b899e511fc8c2aa4aa7d933c9950dcd-bkimg-process,v_1,rw_1,rh_1,maxl_800,pad_1?x-bce-process=image/resize,m_fill,w_128,h_128,align_0,limit_0
1870年		https://baike.baidu.com/item/%E6%99%AE%E6%B3%95%E6%88%98%E4%BA%89?fr=luckinsearch		普法战争,普鲁士军包围巴黎		18701871年普鲁士同法国之间的战争。因争夺欧洲大陆霸权和德意志统一问题,普法两国之间关系长期紧张。1870714日,俾斯麦		18701871年普鲁士同法国之间的战争。因争夺欧洲大陆霸权和德...		https://bkimg.cdn.bcebos.com/smart/a044ad345982b2b7d0a2e36356e1dcef76094b362d4d-bkimg-process,v_1,rw_1,rh_1,maxl_800,pad_1?x-bce-process=image/resize,m_fill,w_128,h_128,align_0,limit_0
1863年		https://baike.baidu.com/item/%E5%8D%97%E5%8C%97%E6%88%98%E4%BA%89?fr=luckinsearch		南北战争的奇卡牟加战役结束		南北战争(American Civil War)即美国内战,是美国历史上唯一一次内战,参战双方为北方美利坚合众国和南方的美利坚联盟国。战		南北战争(American Civil War)即美国内战,是美国历史上唯一...		https://bkimg.cdn.bcebos.com/smart/0ff41bd5ad6eddc451dac9904f97a1fd5266d016950e-bkimg-process,v_1,rw_1,rh_1,maxl_800,pad_1?x-bce-process=image/resize,m_fill,w_128,h_128,align_0,limit_0
1842年		https://baike.baidu.com/item/%E8%A9%B9%E5%A7%86%E6%96%AF%C2%B7%E6%9D%9C%E7%93%A6?fr=luckinsearch		杜瓦瓶发明人詹姆斯·杜瓦出生		詹姆斯·杜瓦爵士(Sir James Dewar)(1842920-1923327日)苏格兰物理学家,化学家,发明家。		詹姆斯·杜瓦爵士(Sir James Dewar)(1842920-19233...		https://bkimg.cdn.bcebos.com/smart/109eb7ec49a0314063d09f38-bkimg-process,v_1,rw_1,rh_1,maxl_800,pad_1?x-bce-process=image/resize,m_fill,w_128,h_128,align_0,limit_0
公元383年		https://baike.baidu.com/item/%E6%B7%9D%E6%B0%B4%E4%B9%8B%E6%88%98?fr=luckinsearch		淝水之战,前秦大军从长安...		淝水之战,发生于公元383年,是东晋时期北方的统一政权前秦向南方东晋发起的侵略吞并的一系列战役中的决定性战役,前秦出兵伐晋		淝水之战,发生于公元383年,是东晋时期北方的统一政权前秦向...		https://bkimg.cdn.bcebos.com/smart/8367d1fcb8ecccb2b801a009-bkimg-process,v_1,rw_1,rh_1,maxl_800,pad_1?x-bce-process=image/resize,m_fill,w_128,h_128,align_0,limit_0

拓展

需求

上面的URL只能获取到历史上的今天的事件,不能获取指定日期历史上的今天的事件,经过研究,还发现另一个接口,可以获取指定日期历史上的今天的事件。

分析

我们在上面的json字符串中有一个url字段,它的值是:

https://baike.baidu.com/calendar/

用浏览器打开该地址,可以查看指定日期的历史上的今天,并且也是百度的。
在这里插入图片描述打开Network面板,刷新网页,查看这些请求,最终会发现这么一条URL,在XHR过滤下,该URL可以获取指定月份在历史的事件。

Request URL: https://baike.baidu.com/cms/home/eventsOnHistory/09.json?_=1632118966396
Request Method: GET
Status Code: 200 OK

在这里插入图片描述例如,0930表示9月30日,如此这般。
在这里插入图片描述在每一个具体日期下,可以看到历史上当天的所有事件。
在这里插入图片描述得到了我们想要的数据后,我们再来观察下请求的URL,也许还能获得一些有意思的东西。

https://baike.baidu.com/cms/home/eventsOnHistory/09.json?_=1632118966396

我们猜测09.json中的09表示9月份,那么我们测试下8月份的请求URL应该是:

https://baike.baidu.com/cms/home/eventsOnHistory/08.json?_=1632118966396

通过浏览器访问该链接,果然如此:
在这里插入图片描述那么如果我们要获取1月到12月的,那么将09.json修改为对应的月份即可,但需要注意如9月必须是09.json而不是9.json,即必须是两个数字,否则不会成功。

但上面的URL还带有一个_=1632118966396参数,该参数什么意思呢?虽然不同的月份用一个参数值好像也没有报错,但我们应该弄清楚该参数的含义。

猜测应该是时间戳,那我们用Java代码将这串数字转换下,看看是不是日期。

public class Test {
    
    
    public static void main(String[] args) {
    
    
        long _ = 1632118966396L;
        Date date = new Date(_);
        System.out.println(date);
        System.out.println(new SimpleDateFormat("yyyy-MM-dd hh:mm:ss").format(date));
    }
}

在这里插入图片描述但也可能只是我们的猜测,得去JavaScript源代码中去确认下。按Ctrl+F快捷键全局搜索关键字eventsOnHistory,这关键字就是URL中的某个词,最终找到的源码如下:
在这里插入图片描述发现该文件的完整路径是:
在这里插入图片描述根据该文件名及路径在Sources面板中找到该js文件
在这里插入图片描述但发现该js文件中的所有内容都集中在一行,不可读,那么就需要格式化代码,点击下方的{ }格式化代码。
在这里插入图片描述我们知道请求的URL是:

https://baike.baidu.com/cms/home/eventsOnHistory/08.json?_=1632118966396

我们可以在该JS代码中搜索cms/home/eventsOnHistory来判断该请求是在哪发出的。
在这里插入图片描述可以看到是通过Ajax发送GET请求:

        getEventsData: function(a) {
    
    
            e.ajax({
    
    
                type: "GET",
                url: "/cms/home/eventsOnHistory/" + l.month + ".json",
                cache: !1,
                dataType: "json",
                success: function(e) {
    
    
                    l.serializeEventsData(e),
                    a()
                }
            })
        },

但并没有_=1632118966396的设置,所以需要继续找。

注意,上面的代码仅仅是定义了getEventData函数,并没有调用,所以我们要查找该函数的调用处。

继续在搜索框中搜索getEventsData,发现仍然没有_=1632118966396的设置。
在这里插入图片描述继续查找buildPage函数的调用处。
在这里插入图片描述已经到头了,所以我们要继续观察_=1632118966396是如何得到的,就需要打断点进行观察了。

l.buildPage()所在行打上断点,然后刷新网页,进行调试。
在这里插入图片描述按快捷键F11或者下面的图标,进入到buildPage()函数的内部。
在这里插入图片描述进入函数内部后,跳转到另一个js文件中了,然后格式化该js文件的代码,如下:
在这里插入图片描述不断进行下一步的调试
在这里插入图片描述终于发现了该参数,注意,这里的参数值不一样,是因为这是一个时间戳,时间在不断变化。注意观察代码:

d.cache === !1 && (d.url = Fn.test(o) ? o.replace(Fn, "$1_=" + Ln++) : o + (Hn.test(o) ? "&" : "?") + "_=" + Ln++)),

在这里插入图片描述而时间戳的值是Ln赋予的,所以我们要去查找Ln的定义处。直接在下方的搜索框中搜索"Ln"即可,发现

var Ln = it.now()

在这里插入图片描述又发现是调用了itnow()方法,那么又去找it定义处。
在这里插入图片描述这是一个初始化函数,就不需要关心了,也不需要再往上查找了。

切换到Console面板,输入it即可查看it内容:
在这里插入图片描述而继续在控制台中输入it.now()即可发现产生的值是什么了。发现it.now就是JavaScript中的new Date产生时间戳,而it.now()则是具体的毫秒数。
在这里插入图片描述但必须注意,时间戳的值是不断变化的。
在这里插入图片描述

代码

通过上面的分析,我们可以写出代码如下:

public class Crawler {
    
    
    public static void main(String[] args) {
    
    
/*
            9月份所有日期在历史上发生的事件集合URL:https://baike.baidu.com/cms/home/eventsOnHistory/09.json?_=1631613042210
            其中_参数是时间戳,表示当前日期的毫秒值
            而09表示月份,从01月到12月,分别数字是[01,12]
         */
        // 第一步,拼接URL
        Calendar calendar = Calendar.getInstance();
        int month = calendar.get(Calendar.MONTH) + 1;// 月份
        String realMonth = (month < 10) ? "0" + month : month + "";
        long timestamp = new Date().getTime();// 时间戳
        String url = "https://baike.baidu.com/cms/home/eventsOnHistory/" + realMonth + ".json?_=" + timestamp;
        // 设置请求头
        Map<String, String> headers = new HashMap<>();
        headers.put("User-Agent", " Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/93.0.4577.63 Safari/537.36");
        headers.put("Host", "baike.baidu.com");
        headers.put("Referer", " https://baike.baidu.com/calendar/");

        // 第二步,发送请求,获取响应,响应内容为json字符串
        String jsonContent = HttpRequest.get(url).headerMap(headers, true).execute().body();

        // 第三步,使用Gson提取json字符串中的有效信息
        Gson gson = new Gson();
        JsonObject jsonObject = gson.fromJson(jsonContent, JsonObject.class);
        JsonObject realMonthJO = jsonObject.getAsJsonObject(realMonth);
        int dayOfMonth = calendar.get(Calendar.DAY_OF_MONTH);
        String realTodayOfMonth = realMonth + ((dayOfMonth < 10) ? "0" + dayOfMonth : dayOfMonth + "");// 获取今天在本月中的日期,如本月是11月份,那么就是"1101"、"1102"...
        // 获取历史上今天所有的事情
        JsonArray dayOfMonthJA = realMonthJO.getAsJsonArray(realTodayOfMonth);
        if (!dayOfMonthJA.isJsonNull() && dayOfMonthJA.size() > 0) {
    
    
            for (JsonElement jsonElement : dayOfMonthJA) {
    
    
                JsonObject elementJO = jsonElement.getAsJsonObject();
                String year = elementJO.get("year").getAsString();
                String title = Jsoup.parse(elementJO.get("title").getAsString()).body().text();
                String festival = elementJO.get("festival").getAsString();
                String link = elementJO.get("link").getAsString();
                String desc = Jsoup.parse(elementJO.get("desc").getAsString()).body().text();
                System.out.println(year + "\t\t" + title + "\t\t" + festival + "\t\t" + link + "\t\t" + desc);
            }
        }
    }
}

打印结果如下:

383		淝水之战,前秦大军从长安出发攻打东晋				https://baike.baidu.com/item/%E6%B7%9D%E6%B0%B4%E4%B9%8B%E6%88%98		淝水之战,发生于公元383年,是东晋时期北方的统一政权前秦向南方东晋发起的侵略吞并的一系列战役中的决定性战役,前秦出兵伐晋
1842		杜瓦瓶发明人詹姆斯·杜瓦出生				https://baike.baidu.com/item/%E8%A9%B9%E5%A7%86%E6%96%AF%C2%B7%E6%9D%9C%E7%93%A6		詹姆斯·杜瓦爵士(Sir James Dewar)(1842920-1923327日)苏格兰物理学家,化学家,发明家。
1863		南北战争的奇卡牟加战役结束				https://baike.baidu.com/item/%E5%8D%97%E5%8C%97%E6%88%98%E4%BA%89		南北战争(American Civil War)即美国内战,是美国历史上唯一一次内战,参战双方为北方美利坚合众国和南方的美利坚联盟国。战
1870		普法战争,普鲁士军包围巴黎				https://baike.baidu.com/item/%E6%99%AE%E6%B3%95%E6%88%98%E4%BA%89		18701871年普鲁士同法国之间的战争。因争夺欧洲大陆霸权和德意志统一问题,普法两国之间关系长期紧张。1870714日,俾斯麦
1899		德裔美国政治哲学家列奥·施特劳斯出生				https://baike.baidu.com/item/%E5%88%97%E5%A5%A5%C2%B7%E6%96%BD%E7%89%B9%E5%8A%B3%E6%96%AF		列奥·施特劳斯(Leo Strauss)是一个争议且传奇的人物。列奥·施特劳斯(Leo Strauss)是一位神秘的政治哲学家。在里根、老布什
1911		近代英国侵华代表人物赫德逝世				https://baike.baidu.com/item/%E8%B5%AB%E5%BE%B7		赫德,英国人,28岁担任大清海关总税务司,掌权长达45年,被清廷视为客卿,在衰朽的旧帝国制度中创造出唯一廉洁不贪腐的高效衙
1936		被国民党特务刺杀的王亚樵逝世				https://baike.baidu.com/item/%E7%8E%8B%E4%BA%9A%E6%A8%B5		王亚樵(18891936),字九光,抗日志士,民族英雄。1889年出生于安徽合肥,自幼读书,聪颖过人,少年时期目睹官吏豪强压榨人
1940		日本政治家麻生太郎出生				https://baike.baidu.com/item/%E9%BA%BB%E7%94%9F%E5%A4%AA%E9%83%8E		麻生太郎(1940920-),日本政治家和企业家。出身政治世家,思想意识保守,不识民间疾苦,历史认识模糊,而个性张扬、口
1945		香港政治人物范徐丽泰出生				https://baike.baidu.com/item/%E8%8C%83%E5%BE%90%E4%B8%BD%E6%B3%B0		范徐丽泰 (1945920日-),本名徐丽泰,香港建制派政治人物,现任港区全国人大代表及常务委员会成员,范徐丽泰早年在香港
1946		首届戛纳国际电影节在法国戛纳举行				https://baike.baidu.com/item/%E6%88%9B%E7%BA%B3%E5%9B%BD%E9%99%85%E7%94%B5%E5%BD%B1%E8%8A%82		戛纳国际电影节(英文:Cannes International Film Festival,法文:Festival De Cannes),亦译作康城(坎城)国际电影节,创
1950		中华人民共和国国徽图案正式诞生				https://baike.baidu.com/item/%E4%B8%AD%E5%8D%8E%E4%BA%BA%E6%B0%91%E5%85%B1%E5%92%8C%E5%9B%BD%E5%9B%BD%E5%BE%BD		中华人民共和国国徽(英语:National Emblem of the People's Republic of China)是中华人民共和国主权的象征和标志。国徽
1957		芬兰著名作曲家让·西贝柳斯逝世				https://baike.baidu.com/item/%E8%AE%A9%C2%B7%E8%A5%BF%E8%B4%9D%E6%9F%B3%E6%96%AF		让·西贝柳斯是芬兰作曲家。他的著名作品《芬兰颂》曾因沙俄禁演而改名《即兴曲》,芬兰独立后才以《芬兰颂》命名。他一生创作了100多部作品,为芬兰音乐开拓了一个新的时代。
1964		香港电影演员张曼玉出生				https://baike.baidu.com/item/%E5%BC%A0%E6%9B%BC%E7%8E%89		张曼玉(Maggie Cheung1964920日—)[1] ,生于香港,祖籍上海,国家一级演员,爱丁堡大学荣誉博士,联合国儿童基金会中国大使。张曼玉是迄今华语影坛获奖最多的电影演员,奖项涵盖十余个国际影展。
1993		德国著名飞行员埃里希·哈特曼逝世				https://baike.baidu.com/item/%E5%9F%83%E9%87%8C%E5%B8%8C%C2%B7%E5%93%88%E7%89%B9%E6%9B%BC		埃里希·哈特曼(Erich·Hartmann)是一位纳粹德国空军的头号王牌飞行员。这位前德国空军战斗机飞行员在第二次世界大战中以3521999		前苏联领袖的妻子赖莎·戈尔巴乔娃逝世				https://baike.baidu.com/item/%E8%B5%96%E8%8E%8E%C2%B7%E6%88%88%E5%B0%94%E5%B7%B4%E4%B9%94%E5%A8%83		赖莎·戈尔巴乔娃(Раи́са Макси́мовна Горбачёва,又译雷莎·戈巴卓娃,本姓Титаре́нко,19

总结:该接口可以获取任一日期在历史上发生的事件,而不仅仅是历史上的今天。除此之外,我们还进行了js分析,来判断URL参数的生成。

猜你喜欢

转载自blog.csdn.net/cnds123321/article/details/120389538