質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
NetBeans

NetBeansは Java、HTML5、PHP、C/C++のアプリケーションのフレームワーク、もしくは統合開発環境(NetBeans IDE)の両方を指します

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Q&A

解決済

2回答

1791閲覧

excite翻訳をjavaから使ってみたいのですが、翻訳が表示されません。

17s50

総合スコア1

NetBeans

NetBeansは Java、HTML5、PHP、C/C++のアプリケーションのフレームワーク、もしくは統合開発環境(NetBeans IDE)の両方を指します

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

0グッド

0クリップ

投稿2021/11/23 14:57

編集2021/11/24 04:40

前提・実現したいこと

excite翻訳をjavaから使ってみたいと思い、Yukun's Blogさん(https://yukun.info/java-excite-translation/)を参考にさせていただきました。
記載されているプログラムを試したところ、「ビルド成功」と表示されるのですが、本来ならば翻訳されるところにはnullとしか表示されませんでした。
原因として考えられることを教えていただきたいです。よろしくお願いいたします!

発生している問題・エラーメッセージ

run:
null
ビルド成功(合計時間: 1秒)

上記のように表示されます。エラーは出ていないのですが、翻訳ができていません。

該当のソースコード

java

1package excitetrans; 2 3import java.net.*; 4import java.util.regex.*; 5import java.io.*; 6/** 7 * Excite翻訳(http://www.excite.co.jp/world/)を利用するクラス 8 */ 9public class ExciteTrans { 10 private String direction; // 翻訳する言語設定 "ENJA" or "JAEN" 11 /** テスト用main() 12 * @param args */ 13 public static void main(String[] args) { 14 ExciteTrans et = new ExciteTrans(); 15 System.out.println(et.getTransText("Hello")); // 翻訳対象テキスト 16 } 17 /** コンストラクタ */ 18 public ExciteTrans() { direction ="ENJA"; } 19 public ExciteTrans(String str) { 20 if (str.equals("JAEN") || str.equals("ENJA")) 21 direction = str; 22 else 23 direction ="JAEN"; 24 } 25 /* 26 * テキストを翻訳 27 * @param before 翻訳前のテキスト 28 * @return 翻訳後のテキスト 29 */ 30 public String getTransText(String before) { 31 String afterText = null; // 翻訳されたテキスト 32 try { 33 // URLクラスのインスタンスを生成 34 URL exciteURL = 35 new URL("https://www.excite.co.jp/world/english/"); 36 // 接続します 37 URLConnection con = exciteURL.openConnection(); 38 // 出力を行うように設定 39 con.setDoOutput(true); 40 // クエリー文の生成・送信 41 try ( // 出力ストリームを取得 42 PrintWriter out = new PrintWriter(con.getOutputStream())) { 43 // クエリー文の生成・送信 44 out.print("before={"+ before +"}&wb_lp={"+ direction +"}"); 45 } 46 // 一行ずつ読み込む 47 try ( // 入力ストリームを取得 48 BufferedReader in = new BufferedReader(new InputStreamReader(con.getInputStream()))) { 49 // 一行ずつ読み込む 50 String aline; 51 // 抽出用の正規表現 52 String regex = "<textarea &#91;^>].*after.*>(.*)"; 53 Pattern pattern = Pattern.compile(regex); 54 while ((aline = in.readLine()) != null) { 55 Matcher mc = pattern.matcher(aline); 56 if(mc.matches()) { 57 afterText = mc.group(1); 58 } } 59 // 入力ストリームを閉じる 60 } 61 } catch (IOException e) { 62 } 63 return afterText; 64 } 65}

試したこと

コードやURLを少し書きかえました。

補足情報(FW/ツールのバージョンなど)

NetBeans IDE 8.2を使っています。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

jimbe

2021/11/23 14:59

コードのご提示はマークダウン記法をご利用ください。 マークダウンに付きましてはヘルプをご参照ください。
guest

回答2

0

参照先のコードをコピペしても null ですので、記事が書かれてから今日までの間で Excite 側で「何か」変わったのではないでしょうか。

投稿2021/11/23 15:05

編集2021/11/23 15:20
jimbe

総合スコア12648

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

17s50

2021/11/23 15:20

回答ありがとうございます。 少し前の記事だったので、確かに何か変わってしまったのかもしれません。
jimbe

2021/11/24 01:55 編集

サイトのソースを調べてみては如何でしょうか。
17s50

2021/11/24 04:50

ありがとうございます。excite翻訳のソースを調べてみます!
guest

0

ベストアンサー

これで、とりあえず HTML の取得だけはできると思いますよ。
正規表現の方も修正が必要な気はしますが。

Java

1try ( // 出力ストリームを取得 2 3 PrintWriter out = new PrintWriter(con.getOutputStream())) { 4 5 // ここが違う 6 // out.print("before={"+ before +"}&wb_lp={"+ direction +"}"); 7 out.print("before="+ before +"&wb_lp="+ direction); 8}

投稿2021/11/25 11:57

編集2021/11/25 12:10
momodx

総合スコア185

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

17s50

2021/11/25 14:26

修正してくださってありがとうございます。正規表現の書き方を見直してみます!
17s50

2021/12/16 02:21

アドバイスをいただいた通り、以下のように正規表現を修正したらできました!ありがとうございます。 String regex = ".*textarea id=\"after.*after\">(?<yaku>.*)</textarea>.*";
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問