諸事情で英英辞書の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



コメント