ドイツ語辞書切り出しツール(作りかけ)

はてなリング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