端末(Terminal)からWeblioで検索できるPythonスクリプト書いた(改訂版)
前回の記事で書いたPythonスクリプトが半端過ぎたので、 少しだけアップデートしました。
オプションで動詞だけ出すとか、過去形の単語で引いても意味が出てくるとかまだまだ改良したい部分はありますが、 これ以上改良するなら多分自分のGitHubアカウント上にでも上げてやります。
#!/usr/bin/env python # -*- coding: utf-8 -*- import sys import urllib.request import urllib.parse from html.parser import HTMLParser from collections import Counter WEBLIO_URL = "http://ejje.weblio.jp/content/" class MyHTMLParser(HTMLParser): def __init__(self): HTMLParser.__init__(self) self._is_kiji = False self._is_translated_word = False self._translated_words = Counter() def handle_starttag(self, tag, attrs): if tag == "div": attrs_dict = {t[0]:t[1] for t in attrs} if attrs_dict.get("class", None) == "kiji": self._is_kiji = True if tag == "a": attrs_dict = {t[0]:t[1] for t in attrs} if attrs_dict.get("class", None) == "crosslink" and self._is_kiji: self._is_translated_word= True def handle_endtag(self, tag): if tag == "div" and self._is_kiji: self._is_kiji = False def handle_data(self, data): if self._is_translated_word: self._translated_words[data] += 1 self._is_translated_word = False @property def translated_words(self): return self._translated_words.most_common(10) def parse_weblio(raw_ret): parser = MyHTMLParser() parser.feed(raw_ret) print(parser.translated_words) def main(): word = urllib.parse.quote_plus(sys.argv[1]) filename, headers = urllib.request.urlretrieve(WEBLIO_URL + word) with open(filename) as f: parse_weblio(f.read()) if __name__ == "__main__": main()