諸事情で英英辞書のAPIを探していて、ネットを徘徊してたらGoogleの辞書サービス(http://www.google.co.jp/dictionary)が、
公式にAPI的な公開はされてないけど、イイ感じに使えるよ的なのをみて、
実際に↓こんなURLにアクセスしてみたら
http://www.google.com/dictionary?aq=f&langpair=en|en&q=desk&hl=en
↓こんな感じで『pr-root』ってトコを引っこ抜けばよさげ。
送信者 blog用 |
ってことで↓みたいなコード書いたら、
1 require 'net/http' 2 require 'rexml/document' 3 4 Net::HTTP.version_1_2 5 Net::HTTP::Proxy('プロキシサーバ', プロキシポート).start('www.google.com', 80) {|http| 6 response = http.get('/dictionary?aq=f&langpair=en|en&q=desk&hl=en') 7 doc = REXML::Document.new response.body 8 puts doc 9 }
↓のように、エスケープしてない&があるとは何事じゃ的な…。
Illegal character '&' in raw string
HTMLとってきてシコシコエスケープしてからパースすんのかったるいなぁと。。。
他のパーサー探したりするのもかったるいし。。。
で、もうちょい探してたら↓こんなんあるぜ、と。
Aonaware Web Services DictService(http://services.aonaware.com/DictService/)
最近仕事でもWordNetがウンタラとか言ってるので↓こんな感じで叩いてやると
(APIの詳細は→http://services.aonaware.com/DictService/DictService.asmx?op=DefineInDict)
curl "http://services.aonaware.com/DictService/DictService.asmx/DefineInDict?dictId=wn&word=japan
↓のようになかなかイイ感じです。
<?xml version='1.0' encoding='UTF-8'?> <WordDefinition xmlns='http://services.aonaware.com/webservices/' xmlns:xsd='http://www.w3.org/2001/XMLSchema' xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'> <Word>desk</Word> <Definitions> <Definition> <Word>desk</Word> <Dictionary> <Id>wn</Id> <Name>WordNet (r) 2.0</Name> </Dictionary> <WordDefinition>desk n : a piece of furniture with a writing surface and usually drawers or other compartments </WordDefinition> </Definition> </Definitions> </WordDefinition>
まぁ、コレでいっかって事で↓こんな感じで、WordDefinitionタグの中身をホゲホゲするコード書くべかな。
1 require 'net/http' 2 require 'rexml/document' 3 4 Net::HTTP.version_1_2 5 Net::HTTP::Proxy('プロキシサーバ', プロキシポート).start('services.aonaware.com', 80) {|http| 6 response = http.get('/DictService/DictService.asmx/DefineInDict?dictId=wn&word=★調べたい単語★) 7 doc = REXML::Document.new response.body 8 puts doc 9 }
たのしいRuby 第3版
posted with amazlet at 11.04.08
高橋 征義 後藤 裕蔵
ソフトバンククリエイティブ
売り上げランキング: 26566
ソフトバンククリエイティブ
売り上げランキング: 26566
コメント