Last active
April 26, 2020 12:52
-
-
Save kzinmr/c8e009ff5d155be5d5468c4b054a1c80 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| from collections import OrderedDict | |
| from html.parser import HTMLParser | |
| import json | |
| class MyHTMLParser(HTMLParser): | |
| debug = False | |
| def __init__(self): | |
| HTMLParser.__init__(self) | |
| self.recording = 0 | |
| self.data = [] | |
| def handle_data(self, data): | |
| ''' コンテンツ抽出を実装する処理 ''' | |
| if self.debug: | |
| print("Data :", data) | |
| else: | |
| self.data.append(data.replace(' ', '')) | |
| with open('kou_h21.html', encoding='cp932') as fp: | |
| lines = fp.read().splitlines() | |
| lines_contents = lines[lines.index('<!-- コンテンツ -->'):lines.index('<div class="contentsMenu">')] | |
| lines_contents = list(filter(None, lines_contents)) | |
| parser = MyHTMLParser() | |
| lines_contents_parsed = [parser.feed(line) for line in lines_contents] | |
| dataiter = iter(parser.data) | |
| data = OrderedDict() | |
| l = '' | |
| key = '' | |
| subkey = '' | |
| while l not in data: | |
| if l not in data and l.startswith('大分類\u3000'): | |
| data[l] = {} # len('大分類\u3000') | |
| l = next(dataiter) | |
| else: | |
| key = l | |
| while True: | |
| if l in data: | |
| key = l | |
| elif l.startswith('中分類\u3000'): | |
| subkey = l | |
| data[key][subkey] = [] | |
| elif l[:3].isnumeric(): | |
| data[key][subkey].append(l) | |
| try: | |
| l = next(dataiter) | |
| except StopIteration: | |
| break | |
| print(json.dumps(data, ensure_ascii=False, indent=4)) |
Author
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
OUTPUT
{ "大分類 A-管理的職業従事者": { "中分類 01-管理的公務員": [ "011 議会議員", "012 管理的国家公務員", "013 管理的地方公務員" ], "中分類 02-法人・団体役員": [ "021 会社役員", "022 独立行政法人等役員", "029 その他の法人・団体役員" ], "中分類 03-法人・団体管理職員": [ "031 会社管理職員", "032 独立行政法人等管理職員", "039 その他の法人・団体管理職員" ], "中分類 04-その他の管理的職業従事者": [ "049 その他の管理的職業従事者" ] }, "大分類 B-専門的・技術的職業従事者": { "中分類 05-研究者": [ "051 自然科学系研究者", "052 人文・社会科学系等研究者" ], "中分類 06-農林水産技術者": [ "061 農林水産技術者" ], "中分類 07-製造技術者(開発)": [ "071 食品技術者(開発)", "072 電気・電子・電気通信技術者(通信ネットワーク技術者を除く)(開発)", "073 機械技術者(開発)", "074 自動車技術者(開発)", "075 輸送用機器技術者(自動車を除く)(開発)", "076 金属技術者(開発)", "077 化学技術者(開発)", "079 その他の製造技術者(開発)" ], "中分類 08-製造技術者(開発を除く)": [ "081 食品技術者(開発を除く)", "082 電気・電子・電気通信技術者(通信ネットワーク技術者を除く)(開発を除く)", "083 機械技術者(開発を除く)", "084 自動車技術者(開発を除く)", "085 輸送用機器技術者(自動車を除く)(開発を除く)", "086 金属技術者(開発を除く)", "087 化学技術者(開発を除く)", "089 その他の製造技術者(開発を除く)" ], "中分類 09-建築・土木・測量技術者": [ "091 建築技術者", "092 土木技術者", "093 測量技術者" ], "中分類 10-情報処理・通信技術者": [ "101 システムコンサルタント", "102 システム設計者", "103 情報処理プロジェクトマネージャ", "104 ソフトウェア作成者", "105 システム運用管理者", "106 通信ネットワーク技術者", "109 その他の情報処理・通信技術者" ], "中分類 11-その他の技術者": [ "119 その他の技術者" ], "中分類 12-医師,歯科医師,獣医師,薬剤師": [ "121 医師", "122 歯科医師", "123 獣医師", "124 薬剤師" ], "中分類 13-保健師,助産師,看護師": [ "131 保健師", "132 助産師", "133 看護師(准看護師を含む)" ], "中分類 14-医療技術者": [ "141 診療放射線技師", "142 臨床工学技士", "143 臨床検査技師", "144 理学療法士,作業療法士", "145 視能訓練士,言語聴覚士", "146 歯科衛生士", "147 歯科技工士" ], "中分類 15-その他の保健医療従事者": [ "151 栄養士", "152 あん摩マッサージ指圧師,はり師,きゅう師,柔道整復師", "159 他に分類されない保健医療従事者" ], "中分類 16-社会福祉専門職業従事者": [ "161 福祉相談指導専門員", "162 福祉施設指導専門員", "163 保育士", "169 その他の社会福祉専門職業従事者" ], "中分類 17-法務従事者": [ "171 裁判官", "172 検察官", "173 弁護士", "174 弁理士", "175 司法書士", "179 その他の法務従事者" ], "中分類 18-経営・金融・保険専門職業従事者": [ "181 公認会計士", "182 税理士", "183 社会保険労務士", "184 金融・保険専門職業従事者", "189 その他の経営・金融・保険専門職業従事者" ], "中分類 19-教員": [ "191 幼稚園教員", "192 小学校教員", "193 中学校教員", "194 高等学校教員", "195 中等教育学校教員", "196 特別支援学校教員", "197 高等専門学校教員", "198 大学教員", "199 その他の教員" ], "中分類 20-宗教家": [ "201 宗教家" ], "中分類 21-著述家,記者,編集者": [ "211 著述家", "212 記者,編集者" ], "中分類 22-美術家,デザイナー,写真家,映像撮影者": [ "221 彫刻家", "222 画家,書家", "223 工芸美術家", "224 デザイナー", "225 写真家,映像撮影者" ], "中分類 23-音楽家,舞台芸術家": [ "231 音楽家", "232 舞踊家", "233 俳優", "234 演出家", "235 演芸家" ], "中分類 24-その他の専門的職業従事者": [ "241 図書館司書", "242 学芸員", "243 カウンセラー(医療・福祉施設を除く)", "244 個人教師", "245 職業スポーツ従事者", "246 通信機器操作従事者", "249 他に分類されない専門的職業従事者" ] }, "大分類 C-事務従事者": { "中分類 25-一般事務従事者": [ "251 庶務事務員", "252 人事事務員", "253 企画事務員", "254 受付・案内事務員", "255 秘書", "256 電話応接事務員", "257 総合事務員", "259 その他の一般事務従事者" ], "中分類 26-会計事務従事者": [ "261 現金出納事務員", "262 預・貯金窓口事務員", "263 経理事務員", "269 その他の会計事務従事者" ], "中分類 27-生産関連事務従事者": [ "271 生産現場事務員", "272 出荷・受荷事務員" ], "中分類 28-営業・販売事務従事者": [ "281 営業・販売事務員", "289 その他の営業・販売事務従事者" ], "中分類 29-外勤事務従事者": [ "291 集金人", "292 調査員", "299 その他の外勤事務従事者" ], "中分類 30-運輸・郵便事務従事者": [ "301 旅客・貨物係事務員", "302 運行管理事務員", "303 郵便事務員" ], "中分類 31-事務用機器操作員": [ "311 パーソナルコンピュータ操作員", "312 データ・エントリー装置操作員", "313 電子計算機オペレーター(パーソナルコンピュータを除く)", "319 その他の事務用機器操作員" ] }, "大分類 D-販売従事者": { "中分類 32-商品販売従事者": [ "321 小売店主・店長", "322 卸売店主・店長", "323 販売店員", "324 商品訪問・移動販売従事者", "325 再生資源回収・卸売従事者", "326 商品仕入外交員" ], "中分類 33-販売類似職業従事者": [ "331 不動産仲介・売買人", "332 保険代理・仲立人(ブローカー)", "333 有価証券売買・仲立人,金融仲立人", "334 質屋店主・店員", "339 その他の販売類似職業従事者" ], "中分類 34-営業職業従事者": [ "341 食料品営業職業従事者", "342 化学品営業職業従事者", "343 医薬品営業職業従事者", "344 機械器具営業職業従事者(通信機械器具を除く)", "345 通信・システム営業職業従事者", "346 金融・保険営業職業従事者", "347 不動産営業職業従事者", "349 その他の営業職業従事者" ] }, "大分類 E-サービス職業従事者": { "中分類 35-家庭生活支援サービス職業従事者": [ "351 家政婦(夫),家事手伝い", "359 その他の家庭生活支援サービス職業従事者" ], "中分類 36-介護サービス職業従事者": [ "361 介護職員(医療・福祉施設等)", "362 訪問介護従事者" ], "中分類 37-保健医療サービス職業従事者": [ "371 看護助手", "372 歯科助手", "379 その他の保健医療サービス職業従事者" ], "中分類 38-生活衛生サービス職業従事者": [ "381 理容師", "382 美容師", "383 美容サービス従事者(美容師を除く)", "384 浴場従事者", "385 クリーニング職", "386 洗張職" ], "中分類 39-飲食物調理従事者": [ "391 調理人", "392 バーテンダー" ], "中分類 40-接客・給仕職業従事者": [ "401 飲食店主・店長", "402 旅館主・支配人", "403 飲食物給仕従事者", "404 身の回り世話従事者", "405 接客社交従事者", "406 芸者,ダンサー", "407 娯楽場等接客員" ], "中分類 41-居住施設・ビル等管理人": [ "411 マンション・アパート・下宿管理人", "412 寄宿舎・寮管理人", "413 ビル管理人", "414 駐車場管理人" ], "中分類 42-その他のサービス職業従事者": [ "421 旅行・観光案内人", "422 物品一時預り人", "423 物品賃貸人", "424 広告宣伝員", "425 葬儀師,火葬作業員", "429 他に分類されないサービス職業従事者" ] }, "大分類 F-保安職業従事者": { "中分類 43-自衛官": [ "431 陸上自衛官", "432 海上自衛官", "433 航空自衛官", "434 防衛大学校・防衛医科大学校学生" ], "中分類 44-司法警察職員": [ "441 警察官", "442 海上保安官", "449 その他の司法警察職員" ], "中分類 45-その他の保安職業従事者": [ "451 看守", "452 消防員", "453 警備員", "459 他に分類されない保安職業従事者" ] }, "大分類 G-農林漁業従事者": { "中分類 46-農業従事者": [ "461 農耕従事者", "462 養畜従事者", "463 植木職,造園師", "469 その他の農業従事者" ], "中分類 47-林業従事者": [ "471 育林従事者", "472 伐木・造材・集材従事者", "479 その他の林業従事者" ], "中分類 48-漁業従事者": [ "481 漁労従事者", "482 船長・航海士・機関長・機関士(漁労船)", "483 海藻・貝採取従事者", "484 水産養殖従事者", "489 その他の漁業従事者" ] }, "大分類 H-生産工程従事者": { "中分類 49-生産設備制御・監視従事者(金属製品)": [ "491 製銑・製鋼・非鉄金属製錬設備制御・監視員", "492 鋳物製造・鍛造設備制御・監視員", "493 金属工作設備制御・監視員", "494 金属プレス設備制御・監視員", "495 鉄工・製缶設備制御・監視員", "496 板金設備制御・監視員", "497 金属彫刻・表面処理設備制御・監視員", "498 金属溶接・溶断設備制御・監視員", "499 その他の生産設備制御・監視従事者(金属製品)" ], "中分類 50-生産設備制御・監視従事者(金属製品を除く)": [ "501 化学製品生産設備制御・監視員", "502 窯業・土石製品生産設備制御・監視員", "503 食料品生産設備制御・監視員", "504 飲料・たばこ生産設備制御・監視員", "505 紡織・衣服・繊維製品生産設備制御・監視員", "506 木・紙製品生産設備制御・監視員", "507 印刷・製本設備制御・監視員", "508 ゴム・プラスチック製品生産設備制御・監視員", "509 その他の生産設備制御・監視従事者(金属製品を除く)" ], "中分類 51-機械組立設備制御・監視従事者": [ "511 はん用・生産用・業務用機械器具組立設備制御・監視員", "512 電気機械器具組立設備制御・監視員", "513 自動車組立設備制御・監視員", "514 輸送機械組立設備制御・監視員(自動車を除く)", "515 計量計測機器・光学機械器具組立設備制御・監視員" ], "中分類 52-製品製造・加工処理従事者(金属製品)": [ "521 製銑・製鋼・非鉄金属製錬従事者", "522 鋳物製造・鍛造従事者", "523 金属工作機械作業従事者", "524 金属プレス従事者", "525 鉄工,製缶従事者", "526 板金従事者", "527 金属彫刻・表面処理従事者", "528 金属溶接・溶断従事者", "529 その他の製品製造・加工処理従事者(金属製品)" ], "中分類 53-製品製造・加工処理従事者(金属製品を除く)": [ "531 化学製品製造従事者", "532 窯業・土石製品製造従事者", "533 食料品製造従事者", "534 飲料・たばこ製造従事者", "535 紡織・衣服・繊維製品製造従事者", "536 木・紙製品製造従事者", "537 印刷・製本従事者", "538 ゴム・プラスチック製品製造従事者", "539 その他の製品製造・加工処理従事者(金属製品を除く)" ], "中分類 54-機械組立従事者": [ "541 はん用・生産用・業務用機械器具組立従事者", "542 電気機械器具組立従事者", "543 自動車組立従事者", "544 輸送機械組立従事者(自動車を除く)", "545 計量計測機器・光学機械器具組立従事者" ], "中分類 55-機械整備・修理従事者": [ "551 はん用・生産用・業務用機械器具整備・修理従事者", "552 電気機械器具整備・修理従事者", "553 自動車整備・修理従事者", "554 輸送機械整備・修理従事者(自動車を除く)", "555 計量計測機器・光学機械器具整備・修理従事者" ], "中分類 56-製品検査従事者(金属製品)": [ "561 金属材料検査従事者", "562 金属加工・溶接・溶断検査従事者" ], "中分類 57-製品検査従事者(金属製品を除く)": [ "571 化学製品検査従事者", "572 窯業・土石製品検査従事者", "573 食料品検査従事者", "574 飲料・たばこ検査従事者", "575 紡織・衣服・繊維製品検査従事者", "576 木・紙製品検査従事者", "577 印刷・製本検査従事者", "578 ゴム・プラスチック製品検査従事者", "579 その他の製品検査従事者(金属製品を除く)" ], "中分類 58-機械検査従事者": [ "581 はん用・生産用・業務用機械器具検査従事者", "582 電気機械器具検査従事者", "583 自動車検査従事者", "584 輸送機械検査従事者(自動車を除く)", "585 計量計測機器・光学機械器具検査従事者" ], "中分類 59-生産関連・生産類似作業従事者": [ "591 生産関連作業従事者", "592 生産類似作業従事者" ] }, "大分類 I-輸送・機械運転従事者": { "中分類 60-鉄道運転従事者": [ "601 電車運転士", "609 その他の鉄道運転従事者" ], "中分類 61-自動車運転従事者": [ "611 バス運転者", "612 乗用自動車運転者", "613 貨物自動車運転者", "619 その他の自動車運転従事者" ], "中分類 62-船舶・航空機運転従事者": [ "621 船長(漁労船を除く)", "622 航海士・運航士(漁労船を除く),水先人", "623 船舶機関長・機関士(漁労船を除く)", "624 航空機操縦士" ], "中分類 63-その他の輸送従事者": [ "631 車掌", "632 鉄道輸送関連業務従事者", "633 甲板員,船舶技士", "634 船舶機関員", "639 他に分類されない輸送従事者" ], "中分類 64-定置・建設機械運転従事者": [ "641 発電員,変電員", "642 ボイラー・オペレーター", "643 クレーン・ウインチ運転従事者", "644 ポンプ・ブロワー・コンプレッサー運転従事者", "645 建設・さく井機械運転従事者", "646 採油・天然ガス採取機械運転従事者", "649 その他の定置・建設機械運転従事者" ] }, "大分類 J-建設・採掘従事者": { "中分類 65-建設躯体工事従事者": [ "651 型枠大工", "652 とび職", "653 鉄筋作業従事者" ], "中分類 66-建設従事者(建設躯体工事従事者を除く)": [ "661 大工", "662 ブロック積・タイル張従事者", "663 屋根ふき従事者", "664 左官", "665 畳職", "666 配管従事者", "669 その他の建設従事者" ], "中分類 67-電気工事従事者": [ "671 送電線架線・敷設従事者", "672 配電線架線・敷設従事者", "673 通信線架線・敷設従事者", "674 電気通信設備工事従事者", "679 その他の電気工事従事者" ], "中分類 68-土木作業従事者": [ "681 土木従事者", "682 鉄道線路工事従事者", "683 ダム・トンネル掘削従事者" ], "中分類 69-採掘従事者": [ "691 採鉱員", "692 石切出従事者", "693 砂利・砂・粘土採取従事者", "699 その他の採掘従事者" ] }, "大分類 K-運搬・清掃・包装等従事者": { "中分類 70-運搬従事者": [ "701 郵便・電報外務員", "702 船内・沿岸荷役従事者", "703 陸上荷役・運搬従事者", "704 倉庫作業従事者", "705 配達員", "706 荷造従事者" ], "中分類 71-清掃従事者": [ "711 ビル・建物清掃員", "712 ハウスクリーニング職", "713 道路・公園清掃員", "714 ごみ・し尿処理従事者", "715 産業廃棄物処理従事者", "719 その他の清掃従事者" ], "中分類 72-包装従事者": [ "721 包装従事者" ], "中分類 73-その他の運搬・清掃・包装等従事者": [ "739 その他の運搬・清掃・包装等従事者" ] }, "大分類 L-分類不能の職業": { "中分類 99-分類不能の職業": [ "999 分類不能の職業" ] } }```