ネイバー国語辞典/英語辞書検索ツール_v1.01_20220708
1つのエラーを修正した「ネイバー国語辞書/英語辞書検索ツール_v1.01_20220708」を配布する。
ネイバー国語辞典、英語辞書検索ツールの概要と使用方法は、以下の記事にまとめられている。
本日(2022-07-08) 次のようなコメントが走った。
https://prodtool.tistory.com/28#comment9159871
#ToDo:コメントリンクを変更するかどうかを確認する

確認してみると、次のエラーメッセージが表示されます。
Fiddlerで確認してみると、Responseが空の状態だ。
- 確認クエリ:サインアップ
- URL: https://ko.dict.naver.com/api3/koko/search?query=%EA%B0%80%EC%9E%85
サーバーでいくつかの条件が追加されているようです。その条件を満たさないときは、答えを与えないようだ。
Webブラウザで検索すると、通常はResponseがjsonとして受け入れられます。
正常な応答を受け取るRequest headerにRefererがある。
もしかしてReferer headerを追加してみた。 (modUtil.GetDataFromURL 36行)
Option Explicit
Function GetDataFromURL(strURL, strMethod, strPostData, Optional strCharSet = "UTF-8")
Dim lngTimeout
Dim strUserAgentString
Dim intSslErrorIgnoreFlags
Dim blnEnableRedirects
Dim blnEnableHttpsToHttpRedirects
Dim strHostOverride
Dim strLogin
Dim strPassword
Dim strResponseText
Dim objWinHttp
lngTimeout = 59000
strUserAgentString = "http_requester/0.1"
intSslErrorIgnoreFlags = 13056 ' 13056: ignore all err, 0: accept no err
blnEnableRedirects = True
blnEnableHttpsToHttpRedirects = True
strHostOverride = ""
strLogin = ""
strPassword = ""
Set objWinHttp = CreateObject("WinHttp.WinHttpRequest.5.1")
'--------------------------------------------------------------------
'objWinHttp.SetProxy 2, "xxx.xxx.xxx.xxx:xxxx", "" 'Proxy를 사용하는 환경에서 설정
'--------------------------------------------------------------------
objWinHttp.SetTimeouts lngTimeout, lngTimeout, lngTimeout, lngTimeout
objWinHttp.Open strMethod, strURL
If strMethod = "POST" Then
objWinHttp.SetRequestHeader "Content-type", "application/x-www-form-urlencoded; charset=UTF-8"
Else
objWinHttp.SetRequestHeader "Content-type", "text/html; charset=euc-kr"
End If
If strHostOverride <> "" Then
objWinHttp.SetRequestHeader "Host", strHostOverride
End If
objWinHttp.SetRequestHeader "Referer", "https://ko.dict.naver.com/" '2022-07-08 추가
objWinHttp.Option(0) = strUserAgentString
objWinHttp.Option(4) = intSslErrorIgnoreFlags
objWinHttp.Option(6) = blnEnableRedirects
objWinHttp.Option(12) = blnEnableHttpsToHttpRedirects
If (strLogin <> "") And (strPassword <> "") Then
objWinHttp.SetCredentials strLogin, strPassword, 0
End If
On Error Resume Next
objWinHttp.Send (strPostData)
objWinHttp.WaitForResponse
If Err.Number = 0 Then
If objWinHttp.Status = "200" Then
'GetDataFromURL = objWinHttp.ResponseText
GetDataFromURL = BinaryToText(objWinHttp.ResponseBody, strCharSet)
Else
GetDataFromURL = "HTTP " & objWinHttp.Status & " " & _
objWinHttp.StatusText
End If
Else
GetDataFromURL = "Error " & Err.Number & " " & Err.Source & " " & _
Err.Description
End If
On Error GoTo 0
Set objWinHttp = Nothing
End Function
うまく動作します!
このエラーをパッチしたバージョン(ネイバー国語辞書/英語辞書検索ツール_v1.01_20220708)をgithubにアップロードしておき、下のURLに直接ダウンロードできます。
https://github.com/DAToolset/ToolsForDataStandard/raw/main/ネイバー国語辞書、英語辞書検索ツール_v1.01_20220708.xlsm
ちなみに、githubにディレクトリを作成し、source codeを別に置いた。
ToolsForDataStandard/src_ネイバー国語辞書、英語辞書検索ツール at main · DAToolset/ToolsForDataStandard (github.com)
<< 関連記事のリスト >>











こんにちは。単語抽出ツールに続き、辞書検索ツールもよく使用中です。
ところが一つ発見しました。
premiumをオタロpreimiumと入力して検索しましたが、premiumの結果値を吐きました。
私は意味を付ける作業と一緒にタイプミスも一緒に検出中でした。
ネイバー辞書で該当単語を検索するので自動的に誤字変換をして結果値を与えてそんなようですが…正確に一致する場合だけ吐き出すようにすればいいようです…。 (もちろん「正確に一致」というオプションがありますが^^;;)
良いコメントありがとうございます。
ネイバー辞書検索結果JSONデータを確認してみると、入力した単語(A)と検索結果の単語(B)が異なるときに2つの値をそれぞれ管理する項目がありますね。
入力した単語(A)と検索結果の単語(B)が異なる場合を確認できるよう、近いうちに機能を追加します。
おお!変更適用可能なアイテムなので幸いです!楽しみにしています。〜ありがとう
機能パッチで書いておきます。
https://prodskill.com/ko/naver-korean-english-dictionary-search-tool-update-20240201/
内容をご覧ください。
ありがとうございます!
ありがとうございました〜^^