ドイツ語辞書切り出しツール(作りかけ)
はてなリングのdotnetに入ってみた。http://dotnet.ring.hatena.ne.jp/
いま作りかけのツールは、単語が羅列してあるテキストファイルを用意して、それを三●社のcgiにpostして、辞書ひき結果を一単語につき一行にしてhtmlでアウトプットする、というものです。
なんで一単語につき一行かというと、そいつをコピペすればエクセルのシートに貼り付けられるし、そもそも単語の羅列自体エクセルシートに行なっているからです。
ようするにExcelで単語帳をつくるためのツールです。
いまのところ一単語の検索だけできます。
以下ToDo
- 三●社の辞書検索はウムラウト等に対応してないので(なんでやねん)テキストファイルにウムラウト等があったばあい文字を代替させる。
- 複数行の検索に対応。
- 検索失敗に対応。
- 他の辞書(英単語とか)の選択ができるようにする。
- 出力ファイルの形式を選択できるようにする。
- あとなんかないかな。
いまのコードを貼っておきます。
あー、削らなきゃならない部分が一目瞭然だw
ファイル名の前に¥記号入れよう。
まだデバッグモードで作ってるからConsole出力とかつかってるし。
Imports System Imports System.IO Imports System.Net Imports System.Web Imports System.Text Imports System.Collections Public Class Form1 Inherits System.Windows.Forms.Form #Region " Windows フォーム デザイナで生成されたコード " (略) #End Region Public Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Dim enc As Encoding = Encoding.GetEncoding("Shift_JIS") Dim wd As String = Trim(TextBox1.Text) Dim url As String = "http://www5.mediagalaxy.co.jp/CGI/sanshushadj/search.cgi" Dim param As String = "" 'ポストデータの作成 Dim ht As Hashtable = New Hashtable ht("key_word") = HttpUtility.UrlEncode(wd, enc) ht("cmd") = "list" For Each k As String In ht.Keys param = param & String.Format("{0}={1}&", k, ht(k)) Next Dim data As Byte() = Encoding.GetEncoding("Shift_JIS").GetBytes(param) 'リクエストの作成 Dim req As HttpWebRequest = CType(WebRequest.Create(url), HttpWebRequest) req.Method = "POST" 'req.ContentType = "application/x-www-form-urlencoded" 'req.ContentLength = data.Length 'ポストデータの書き込み Dim reqStream As Stream = req.GetRequestStream() reqStream.Write(data, 0, data.Length) reqStream.Close() 'レスポンスの取得と書き込み Dim res As WebResponse = req.GetResponse Dim resStream As Stream = res.GetResponseStream Dim sr As StreamReader = New StreamReader(resStream, enc) Dim html As String = sr.ReadToEnd sr.Close() resStream.Close() '最初のHREFを取得 Dim startMark As String = "<A HREF=""" Dim rstart As Integer = html.IndexOf(startMark) + startMark.Length Dim rend As Integer = html.IndexOf(""">", rstart) Dim result As String = html.Substring(rstart, rend - rstart) Console.WriteLine(result) ''最初のHREFのページ取得 Dim scResult As String = result req = CType(WebRequest.Create(scResult), HttpWebRequest) res = req.GetResponse resStream = res.GetResponseStream sr = New StreamReader(resStream, enc) html = sr.ReadToEnd sr.Close() resStream.Close() ''欲しい部分だけ切り取り startMark = "<BR><FONT COLOR=""#FF0000"">" rstart = html.IndexOf(startMark) + startMark.Length rend = html.IndexOf("</TD></TR></TABLE>", rstart) result = html.Substring(rstart, rend - rstart) result = Replace(result, "<BR>", "") result = Replace(result, "<I>", "") result = Replace(result, "</I>", "") result = Replace(result, "<B>", "") result = Replace(result, "</B>", "") result = Replace(result, "</FONT>", "") result = Replace(result, "<FONT COLOR=""#FF0000"">", "") Dim swFile As New StreamWriter(Directory.GetCurrentDirectory & "result.htm", False, Encoding.Default) swFile.WriteLine(result) swFile.Close() End Sub End Class