誕生日がわかっている歴史上人物のなかで一番古いのはだれか?

執筆日時:

f:id:daruyanagi:20170211171329p:plain

ちょっと調べてみた。ソースは Wikipedia の日付ページ。1月1日から順に「誕生日」欄の一番上を拾っていった。最初は「Excel」でやっていたのだけど、1月16日までやったところで「これは人類がやるべき作業ではない」と気づいたので、ASP.NET Web Pages + HttpAgilityPack でスクレイピングした。

結果はこんな感じ。

一番古いのは、紀元前549年4月12日に生まれた マハーヴィーラ(インド・ジャイナ教の開祖)でした。それに次ぐグループとしては、共和制から帝政にかけてのローマの偉人たちが目に付く。かなり年代が下がらないと生年月日がわからないケースもあるみたいだけど、なにぶん、ソースが Wikipedia だから偏りがあるかもしれない。

日本人に限れば、パッと見だけど574年2月7日生まれの 聖徳太子 かな? ソースが日本語版 Wikipedia なせいか、日本人が登場する日付も割と多い。そのほとんどは男性の皇族か将軍、大名、有名な僧侶が占めるけれど、なかには雲光院(阿茶局、徳川家康の側室)、五郎八姫(伊達政宗の娘)などの女性も見られる。

1drv.ms

おまけ

ソースも張り付けておく。XPath ひとつでバシッととってくるのは無理っぽかったので、ちょっとぐちゃぐちゃしているかもしれない。あと、結果が正しいかどうかは1月16日までしか確かめていない。

@{
Layout = null;

var date = new DateTime(2017, 1, 1); var result = new List<dynamic>();

while (date.Year == 2017) // while (date.Month == 1) {

var address = string.Format( "https://ja.wikipedia.org/wiki/{0}", date.ToString("M月d日")); var client = new WebClient() { Encoding = System.Text.Encoding.UTF8, }; var html = client.DownloadString(address);

var doc = new HtmlAgilityPack.HtmlDocument(); doc.LoadHtml(html); var node = doc.DocumentNode .SelectNodes(@"//h2") .Where(_ => _.InnerHtml.Contains("誕生日")) .First(); do { node = node.NextSibling; } while (node.Name != "ul"); node = node.ChildNodes.First(_ => _.Name == "li");

var text = node.InnerText;

var year = text.Split('、').First().Split('-') .First().Split('(').First().Trim(); var name = text.Split('、').First().Split('-') .Last().Trim(); var description = text.Split('、').Last();

result.Add(new { Date = date.ToString("M月d日"), Year = year, Name = name, Description = description, });

date = date.AddDays(1); } }

<!DOCTYPE html>

<html> <head> <meta name="viewport" content="width=device-width" /> <title></title> </head> <body> <div> <table> @foreach (var item in result) { <tr> <td>@item.Date</td> <td>@item.Year</td> <td>@item.Name</td> <td>@item.Description</td> </tr> } </table> </div> </body> </html>