perlでWikipediaの内閣総理大臣の一覧をスクレイピングする方法

Web::Scraper に付属の scraperコマンドでスクレイピング。

ページ情報取得

$ scraper 'https://ja.wikipedia.org/wiki/%E5%86%85%E9%96%A3%E7%B7%8F%E7%90%86%E5%A4%A7%E8%87%A3%E3%81%AE%E4%B8%80%E8%A6%A7'

スクレイピング

scraper> process '/html/body/div[3]/div[3]/div[4]/table[4]/tr', 'list[]'=> scraper { process '//th', 'id'=> 'TEXT'; process '//td[4]/b/a', 'title'=> 'TEXT'; process '//td[4]/small', 'kana'=> 'TEXT'; process '//td[5]/a', 'naikaku[]'=> 'TEXT'; process '//td[6]', 'period[]'=> 'TEXT'  };

結果出力

scraper> y
Wide character in warn at /usr/local/bin/scraper line 67.
---
list:
  - id: 代
  - id: 明治
  - id: 1
    kana: いとう ひろぶみ
    naikaku:
      - 第1次伊藤内閣
    period:
      - '1885年12月22日 - 1888年4月30日 (861日)'
    title: 伊藤博文
  - id: 2
    kana: くろだ きよたか
    naikaku:
      - 黒田内閣
    period:
      - '1888年4月30日 - 1889年10月25日 (544日)'
    title: 黒田清隆
  - id: '-'
    kana: (さんじょう さねとみ)
    naikaku:
      - 三條暫定内閣
    period:
      - '(1889年10月25日 - 1889年12月24日)'
  - id: 3
    kana: やまがた ありとも
    naikaku:
      - 第1次山縣内閣
    period:
      - '1889年12月24日 - 1891年5月6日 (499日)'
    title: 山縣有朋
  - id: 大日本帝国憲法下
  - id: 4
    kana: まつかた まさよし
    naikaku:
      - 第1次松方内閣
    period:
      - '1891年5月6日 - 1892年8月8日 (461日)'
    title: 松方正義
  - id: 5
    kana: いとう ひろぶみ
    naikaku:
      - 第2次伊藤内閣
    period:
      - '1892年8月8日 - 1896年8月31日 (1485日)'
  - id: '-'
    kana: (くろだ きよたか)
    period:
      - '(1896年8月31日 - 1896年9月18日)'
  - id: 6
    kana: まつかた まさよし
    naikaku:
      - 第2次松方内閣
    period:
      - '1896年9月18日 - 1898年1月12日 (482日) (通算943日)'
  - id: 7
    kana: いとう ひろぶみ
    naikaku:
      - 第3次伊藤内閣
    period:
      - '1898年1月12日 - 1898年6月30日 (170日)'
  - id: 8
    kana: おおくま しげのぶ
    naikaku:
      - 第1次大隈内閣
    period:
      - '1898年6月30日 - 1898年11月8日 (132日)'
    title: 大隈重信
  - id: 9
    kana: やまがた ありとも
    naikaku:
      - 第2次山縣内閣
    period:
      - '1898年11月8日 - 1900年10月19日 (711日) (通算1210日)'
  - id: 10
    kana: いとう ひろぶみ
    naikaku:
      - 第4次伊藤内閣
    period:
      - '1900年10月19日 - 1901年5月10日 (204日) (通算2720日)'
  - id: '-'
    kana: (さいおんじ きんもち)
    period:
      - '(1901年5月10日 - 1901年6月2日)'
  - id: 11
    kana: かつら たろう
    naikaku:
      - 第1次桂内閣
    period:
      - '1901年6月2日 - 1906年1月7日 (1681日)'
    title: 桂太郎
  - id: 12
    kana: さいおんじ きんもち
    naikaku:
      - 第1次西園寺内閣
    period:
      - '1906年1月7日 - 1908年7月14日 (920日)'
    title: 西園寺公望
  - id: 13
    kana: かつら たろう
    naikaku:
      - 第2次桂内閣
    period:
      - '1908年7月14日 - 1911年8月30日 (1143日)'
  - id: 14
    kana: さいおんじ きんもち
    naikaku:
      - 第2次西園寺内閣
    period:
      - '1911年8月30日 - 1912年12月21日 (480日) (通算1400日)'
  - id: 大正
  - id: 15
    kana: かつら たろう
    naikaku:
      - 第3次桂内閣
    period:
      - '1912年12月21日 - 1913年2月20日 (62日) (通算2886日)'
  - id: 16
    kana: やまもと ごんべえ
    naikaku:
      - 第1次山本内閣
    period:
      - '1913年2月20日 - 1914年4月16日 (421日)'
    title: 山本権兵衛
  - id: 17
    kana: おおくま しげのぶ
    naikaku:
      - 第2次大隈内閣
    period:
      - '1914年4月16日 - 1916年10月9日 (908日) (通算1040日)'
  - id: 18
    kana: てらうち まさたけ
    naikaku:
      - 寺内内閣
    period:
      - '1916年10月9日 - 1918年9月29日 (721日)'
    title: 寺内正毅
  - id: 19
    kana: はら たかし
    naikaku:
      - 原内閣
    period:
      - '1918年9月29日 - 1921年11月4日 (1133日)'
    title: 原敬
  - id: '-'
    kana: (うちだ こうさい)
    period:
      - '(1921年11月4日 - 1921年11月13日)'
  - id: 20
    kana: たかはし これきよ
    naikaku:
      - 高橋内閣
    period:
      - '1921年11月13日 - 1922年6月12日 (212日)'
    title: 高橋是清
  - id: 21
    kana: かとう ともさぶろう
    naikaku:
      - 加藤友三郎内閣
    period:
      - '1922年6月12日 - 1923年8月24日 (439日)'
    title: 加藤友三郎
  - id: '-'
    kana: (うちだ こうさい)
    period:
      - '(1923年8月24日 - 1923年9月2日)'
  - id: 22
    kana: やまもと ごんべえ
    naikaku:
      - 第2次山本内閣
    period:
      - '1923年9月2日 - 1924年1月7日 (128日) (通算549日)'
  - id: 23
    kana: きようら けいご
    naikaku:
      - 清浦内閣
    period:
      - '1924年1月7日 - 1924年6月11日 (157日)'
    title: 清浦奎吾
  - id: 24
    kana: かとう たかあき
    naikaku:
      - 加藤高明内閣
    period:
      - '1924年6月11日 - 1926年1月28日 (597日)'
    title: 加藤高明
  - id: '-'
    kana: (わかつき れいじろう)
    period:
      - '(1926年1月28日 - 1926年1月30日)'
  - id: 25
    kana: わかつき れいじろう
    naikaku:
      - 第1次若槻内閣
    period:
      - '1926年1月30日 - 1927年4月20日 (446日)'
    title: 若槻禮次郎
  - id: 昭和
  - id: 26
    kana: たなか ぎいち
    naikaku:
      - 田中義一内閣
    period:
      - '1927年4月20日 - 1929年7月2日 (805日)'
    title: 田中義一
  - id: 27
    kana: はまぐち おさち
    naikaku:
      - 濱口内閣
    period:
      - '1929年7月2日 - 1931年4月14日 (652日)'
    title: 濱口雄幸
  - id: 28
    kana: わかつき れいじろう
    naikaku:
      - 第2次若槻内閣
    period:
      - '1931年4月14日 - 1931年12月13日 (244日) (通算690日)'
  - id: 29
    kana: いぬかい つよし
    naikaku:
      - 犬養内閣
    period:
      - '1931年12月13日 - 1932年5月16日[注釈 2] (156日)'
    title: 犬養毅
  - id: '-'
    kana: (たかはし これきよ)
    period:
      - '(1932年5月16日 - 1932年5月26日)'
  - id: 30
    kana: さいとう まこと
    naikaku:
      - 齋藤内閣
    period:
      - '1932年5月26日 - 1934年7月8日 (774日)'
    title: 斎藤実
  - id: 31
    kana: おかだ けいすけ
    naikaku:
      - 岡田内閣
    period:
      - '1934年7月8日 - 1936年3月9日 (611日)'
    title: 岡田啓介
  - id: 32
    kana: ひろた こうき
    naikaku:
      - 廣田内閣
    period:
      - '1936年3月9日 - 1937年2月2日 (331日)'
    title: 広田弘毅
  - id: 33
    kana: はやし せんじゅうろう
    naikaku:
      - 林内閣
    period:
      - '1937年2月2日 - 1937年6月4日 (123日)'
    title: 林銑十郎
  - id: 34
    kana: このえ ふみまろ
    naikaku:
      - 第1次近衛内閣
    period:
      - '1937年6月4日 - 1939年1月5日 (581日)'
    title: 近衛文麿
  - id: 35
    kana: ひらぬま きいちろう
    naikaku:
      - 平沼内閣
    period:
      - '1939年1月5日 - 1939年8月30日 (238日)'
    title: 平沼騏一郎
  - id: 36
    kana: あべ のぶゆき
    naikaku:
      - 阿部内閣
    period:
      - '1939年8月30日 - 1940年1月16日 (140日)'
    title: 阿部信行
  - id: 37
    kana: よない みつまさ
    naikaku:
      - 米内内閣
    period:
      - '1940年1月16日 - 1940年7月22日 (189日)'
    title: 米内光政
  - id: 38
    kana: このえ ふみまろ
    naikaku:
      - 第2次近衛内閣
    period:
      - '1940年7月22日 - 1941年7月18日 (362日)'
  - id: 39
  - id: 40
    kana: とうじょう ひでき
    naikaku:
      - 東條内閣
    period:
      - '1941年10月18日 - 1944年7月22日 (1009日)'
    title: 東條英機
  - id: 41
    kana: こいそ くにあき
    naikaku:
      - 小磯内閣
    period:
      - '1944年7月22日 - 1945年4月7日 (260日)'
    title: 小磯國昭
  - id: 42
    kana: すずき かんたろう
    naikaku:
      - 鈴木貫太郎内閣
    period:
      - '1945年4月7日 - 1945年8月17日 (133日)'
    title: 鈴木貫太郎
  - id: 43
    kana: ひがしくにのみや なるひこおう
    naikaku:
      - 東久邇宮内閣
    period:
      - '1945年8月17日 - 1945年10月9日 (54日)'
    title: 東久邇宮稔彦王
  - id: 44
    kana: しではら きじゅうろう
    naikaku:
      - 幣原内閣
    period:
      - '1945年10月9日 - 1946年5月22日 (226日)'
    title: 幣原喜重郎
  - id: 45
    kana: よしだ しげる
    naikaku:
      - 第1次吉田内閣
    period:
      - '1946年5月22日 - 1947年5月24日 (368日)'
    title: 吉田茂
  - id: 日本国憲法下
  - id: 46
    kana: かたやま てつ
    naikaku:
      - 片山内閣
    period:
      - '1947年5月24日 - 1948年3月10日 (292日)'
    title: 片山哲
  - id: 47
    kana: あしだ ひとし
    naikaku:
      - 芦田内閣
    period:
      - '1948年3月10日 - 1948年10月15日 (220日)'
    title: 芦田均
  - id: 48
    kana: よしだ しげる
    naikaku:
      - 第2次吉田内閣
    period:
      - '1948年10月15日 - 1949年2月16日 (125日)'
  - id: 49
  - id: 50
  - id: 51
  - id: 52
    kana: はとやま いちろう
    naikaku:
      - 第1次鳩山一郎内閣
    period:
      - '1954年12月10日 - 1955年3月19日 (100日)'
    title: 鳩山一郎
  - id: 53
  - id: 54
  - id: 55
    kana: いしばし たんざん
    naikaku:
      - 石橋内閣
    period:
      - '1956年12月23日 - 1957年2月25日 (65日)'
    title: 石橋湛山
  - id: 56
    kana: きし のぶすけ
    naikaku:
      - 第1次岸内閣
      - 改造内閣
    period:
      - '1957年2月25日 - 1958年6月12日 (473日)'
    title: 岸信介
  - id: 57
  - id: 58
    kana: いけだ はやと
    naikaku:
      - 第1次池田内閣
    period:
      - '1960年7月19日 - 1960年12月8日 (143日)'
    title: 池田勇人
  - id: 59
  - id: 60
  - id: 61
    kana: さとう えいさく
    naikaku:
      - 第1次佐藤内閣
      - 第1次改造内閣
      - 第2次改造内閣
      - 第3次改造内閣
    period:
      - '1964年11月9日 - 1967年2月17日 (831日)'
    title: 佐藤栄作
  - id: 62
  - id: 63
  - id: 64
    kana: たなか かくえい
    naikaku:
      - 第1次田中角栄内閣
    period:
      - '1972年7月7日 - 1972年12月22日 (169日)'
    title: 田中角栄
  - id: 65
  - id: 66
    kana: みき たけお
    naikaku:
      - 三木内閣
      - 改造内閣
    period:
      - '1974年12月9日 - 1976年12月24日 (747日)'
    title: 三木武夫
  - id: 67
    kana: ふくだ たけお
    naikaku:
      - 福田赳夫内閣
      - 改造内閣
    period:
      - '1976年12月24日 - 1978年12月7日 (714日)'
    title: 福田赳夫
  - id: 68
    kana: おおひら まさよし
    naikaku:
      - 第1次大平内閣
    period:
      - '1978年12月7日 - 1979年11月9日 (338日)'
    title: 大平正芳
  - id: 69
  - id: '-'
    kana: (いとう まさよし)
    period:
      - '(1980年6月12日 - 1980年7月17日)'
  - id: 70
    kana: すずき ぜんこう
    naikaku:
      - 鈴木善幸内閣
      - 改造内閣
    period:
      - '1980年7月17日 - 1982年11月27日 (864日)'
    title: 鈴木善幸
  - id: 71
    kana: なかそね やすひろ
    naikaku:
      - 第1次中曽根内閣
    period:
      - '1982年11月27日 - 1983年12月27日 (396日)'
    title: 中曽根康弘
  - id: 72
  - id: 73
  - id: 74
    kana: たけした のぼる
    naikaku:
      - 竹下内閣
      - 改造内閣
    period:
      - '1987年11月6日 - 1989年6月3日 (576日)'
    title: 竹下登
  - id: 平成
  - id: 75
    kana: うの そうすけ
    naikaku:
      - 宇野内閣
    period:
      - '1989年6月3日 - 1989年8月10日 (69日)'
    title: 宇野宗佑
  - id: 76
    kana: かいふ としき
    naikaku:
      - 第1次海部内閣
    period:
      - '1989年8月10日 - 1990年2月28日 (203日)'
    title: 海部俊樹
  - id: 77
  - id: 78
    kana: みやざわ きいち
    naikaku:
      - 宮澤内閣
      - 改造内閣
    period:
      - '1991年11月5日 - 1993年8月9日 (644日)'
    title: 宮澤喜一
  - id: 79
    kana: ほそかわ もりひろ
    naikaku:
      - 細川内閣
    period:
      - '1993年8月9日 - 1994年4月28日 (263日)'
    title: 細川護熙
  - id: 80
    kana: はた つとむ
    naikaku:
      - 羽田内閣
    period:
      - '1994年4月28日 - 1994年6月30日 (64日)'
    title: 羽田孜
  - id: 81
    kana: むらやま とみいち
    naikaku:
      - 村山内閣
      - 改造内閣
    period:
      - '1994年6月30日 - 1996年1月11日 (561日)'
    title: 村山富市
  - id: 82
    kana: はしもと りゅうたろう
    naikaku:
      - 第1次橋本内閣
    period:
      - '1996年1月11日 - 1996年11月7日 (302日)'
    title: 橋本龍太郎
  - id: 83
  - id: 84
    kana: おぶち けいぞう
    naikaku:
      - 小渕内閣
      - 第1次改造内閣
      - 第2次改造内閣
    period:
      - '1998年7月30日 - 2000年4月5日 (616日)'
    title: 小渕恵三
  - id: 85
    kana: もり よしろう
    naikaku:
      - 第1次森内閣
    period:
      - '2000年4月5日 - 2000年7月4日 (91日)'
    title: 森喜朗
  - id: 86
  - id: 87
    kana: こいずみ じゅんいちろう
    naikaku:
      - 第1次小泉内閣
      - 第1次改造内閣
      - 第2次改造内閣
    period:
      - '2001年4月26日 - 2003年11月19日 (938日)'
    title: 小泉純一郎
  - id: 88
  - id: 89
  - id: 90
    kana: あべ しんぞう
    naikaku:
      - 第1次安倍内閣
      - 改造内閣
    period:
      - '2006年9月26日 - 2007年9月26日 (366日)'
    title: 安倍晋三
  - id: 91
    kana: ふくだ やすお
    naikaku:
      - 福田康夫内閣
      - 改造内閣
    period:
      - '2007年9月26日 - 2008年9月24日 (365日)'
    title: 福田康夫
  - id: 92
    kana: あそう たろう
    naikaku:
      - 麻生内閣
    period:
      - '2008年9月24日 - 2009年9月16日 (358日)'
    title: 麻生太郎
  - id: 93
    kana: はとやま ゆきお
    naikaku:
      - 鳩山由紀夫内閣
    period:
      - '2009年9月16日 - 2010年6月8日 (266日)'
    title: 鳩山由紀夫
  - id: 94
    kana: かん なおと
    naikaku:
      - 菅内閣
      - 第1次改造内閣
      - 第2次改造内閣
    period:
      - '2010年6月8日 - 2011年9月2日 (452日)'
    title: 菅直人
  - id: 95
    kana: のだ よしひこ
    naikaku:
      - 野田内閣
      - 第1次改造内閣
      - 第2次改造内閣
      - 第3次改造内閣
    period:
      - '2011年9月2日 - 2012年12月26日 (482日)'
    title: 野田佳彦
  - id: 96
    kana: あべ しんぞう
    naikaku:
      - 第2次安倍内閣
      - 改造内閣
    period:
      - '2012年12月26日 - 2014年12月24日 (729日)'
  - id: 97

perlコード出力

scraper> c
#!/usr/bin/perl
use strict;
use Web::Scraper;
use URI;

my $uri = URI->new("https://ja.wikipedia.org/wiki/%E5%86%85%E9%96%A3%E7%B7%8F%E7%90%86%E5%A4%A7%E8%87%A3%E3%81%AE%E4%B8%80%E8%A6%A7");
my $scraper = scraper {
    process '/html/body/div[3]/div[3]/div[4]/table[4]/tr', 'list[]'=> scraper { process '//th', 'id'=> 'TEXT'; process '//td[4]/b/a', 'title'=> 'TEXT'; process '//td[4]/small', 'kana'=> 'TEXT'; process '//td[5]/a', 'naikaku[]'=> 'TEXT'; process '//td[6]', 'period[]'=> 'TEXT'  };
};
my $result = $scraper->scrape($uri);