• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:Web ページのテキスト取得)

Webページのテキスト取得方法と文字化け対策

prophetokの回答

  • ベストアンサー
  • prophetok
  • ベストアンサー率44% (13/29)
回答No.1

日本語が文字化け対応 もし、コマンドプロンプトへの出力での文字化けであれば、コマンドプロンプトの文字コードをUTF-8に変更、レジストリもいじって日本語も表示できるようにする必要もあり。参考URL 1番目 その他の環境での文字化けでも、UTF-8文字列をMS932として解釈しているはずなので、環境をUTF-8に変更すれば解決するはず。 テキスト(htmlタグを除く)だけを取得する方法 HTML自体がテキストなので、何をしたいのか、よく分からん。 画面に表示されるテキストのみ取得したいという意味なら、自前でHTMLを解析するか、既存のHTMLパーサを利用する。参考URL 2番目

参考URL:
http://fine.ap.teacup.com/hepo/23.html,http://java-source.net/open-source/html-parsers
noname#101202
質問者

お礼

ありがとうございます。 最初の件は、InputStreamReader の第2パラに String で "utf-8" を指定したらうまくいきました。 HTML パーサを調べて見ます。

関連するQ&A

  • javaのエンコードについて?

    さまざまなホームページを探して、下記のプログラムでホームページの情報は読み取ることができるようになったのですが、文字化けを起こして見ることができません。 何をどうすれば文字化けを防げるのかまったくわかりません。 ご存知の方、おしえていただけないでしょうか? おねがいいたします。 import java.io.*; import java.net.*; class test{ public static void main(String[] args) throws Exception { URL url = null; BufferedReader in = null; String readString = null; url = new URL("http://www.yahoo.co.jp/"); in = new BufferedReader(new InputStreamReader(url.openStream())); while((readString=in.readLine())!=null) System.out.println(readString); in.close(); } }

    • ベストアンサー
    • Java
  • javaでクッキーを取得したい

    以下ソースで、ホームページのデータは取得できるのですが、クッキーが必要なページではうまく作動しません。 どのように改良すればよいでしょうか? また、こういったプログラムを作るのに参考になる書籍をご存知でしたら教えてください。 よろしくお願いいたします。 import java.io.*; import java.net.*; class test { public static void main(String[] args) throws Exception { URL url = null; BufferedReader in = null; String readString = null; url = new URL("http://www.yahoo.co.jp"); in = new BufferedReader(new InputStreamReader(url.openStream(),"JISAutoDetect")); while((readString=in.readLine())!=null) System.out.println(readString); in.close(); } }

    • ベストアンサー
    • Java
  • Ctrl+Zが入力されると終了するプログラム

    入力された文字をそのまま表示し、[Ctrl]+Zが入力されると終了するプログラムを組んでいるんですがどのように記述すればよいか困っています。アドバイスお願いします。 public static void main(String args[])throws IOException{ BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); String str; do{ str = br.readLine(); System.out.println(str); }while(str == null); }

    • ベストアンサー
    • Java
  • javaでのBufferedOutputStreamクラス

    javaプログラミングで、あるURLからBufferedOutputStreamを用いてhtmlファイルを生成し、その生成したhtmlファイルをBufferedReaderで読み込みし、出力してみると文字化けが起こってしまいます。日本語を文字化けさせずに読み込む方法などあるのでしょうか。 以下の方法だと文字化けしてしまいます。 <ファイル生成方法> URL url = new URL( str[i] ); InputStream in = url.openStream(); BufferedOutputStream bo = new BufferedOutputStream(new FileOutputStream(args[0])); while ((len2 = in.read(buf2)) != -1) { for (int j = 0; j < len2; j++) { bo2.write(buf2[j]); } } <ファイル読み込み方法> BufferedReader br = new BufferedReader(new FileReader(args[0])); while((str = br.readLine()) != null){ // 出力 System.out.println(str); } よろしくお願いします。

    • ベストアンサー
    • Java
  • javaのエンコードについて?

    下記のプログラムでホームページの情報は読み取ることができるようになったのですが、一部ホームページ(UTF-8エンコードのホームページと思われる)、文字化けを起こして見ることができません。 解決する方法を、教えていただけないでしょうか? おねがいいたします。 import java.io.*; import java.net.*; class test{ public static void main(String[] args) throws Exception { URL url = null; BufferedReader in = null; String readString = null; url = new URL("http://www.faireal.net/"); in = new BufferedReader(new InputStreamReader(url.openStream(),"JISAutoDetect")); while((readString=in.readLine())!=null) System.out.println(readString); in.close(); } }

    • ベストアンサー
    • Java
  • java ファイル操作

    現在javaでファイル操作しファイルの文字列を検索したりファイルに文字列を追加したりする ものを作成しています。 現状のコードはこのような感じです。 class addresskensaku{ public static void main(String[] args)throws IOException{ System.out.println("数字を選択\n1.名前で検索\n2.年齢で検索\n3.出身地で検索\n4.追加"); BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); String str = br.readLine(); char res = str.charAt(0); //1が選択された場合 if(res == '1' || res == '1'){ System.out.println("名前を入力してください。"); BufferedReader fn = new BufferedReader(new InputStreamReader(System.in)); String str1 = fn.readLine(); try{ FileReader freader = new FileReader("addressdata.txt"); BufferedReader breader = new BufferedReader(freader); String tmp = null; //検索 System.out.println("検索結果 :"); while((tmp=breader.readLine())!=null){ String[] words = tmp.split(","); //部分一致 if(words[0].indexOf(str1) != -1){ System.out.println(tmp); } } breader.close(); }catch(IOException e){ System.out.println("e"); } } //2が入力された場合 if(res == '2' || res == '2'){ System.out.println("年齢を入力してください。"); BufferedReader o = new BufferedReader(new InputStreamReader(System.in)); String ol = o.readLine(); try{ FileReader freader = new FileReader("addressdata.txt"); BufferedReader breader = new BufferedReader(freader); String tmp =null; //検索 while((tmp=breader.readLine())!=null){ String[] words = tmp.split(","); //完全一致 if (ol.equals(words[1])){ // System.out.println("検索結果:"); System.out.println(tmp); } } breader.close(); }catch(IOException e){ System.out.println("e"); } } //3が入力された場合 if(res == '3' || res == '3'){ System.out.println("出身地を入力してください。"); BufferedReader p = new BufferedReader(new InputStreamReader(System.in)); String pref = p.readLine(); try{ FileReader freader = new FileReader("addressdata.txt"); BufferedReader breader = new BufferedReader(freader); String tmp = null; //検索 while((tmp=breader.readLine())!=null){ String[] words = tmp.split(","); //部分一致 if(words[2].indexOf(pref) != -1){ System.out.println(tmp); } } breader.close(); }catch(IOException e){ System.out.println("e"); } } //4が入力された場合 追加 if(res == '4' || res == '4'){ //氏名入力 System.out.println("氏名を入力してください。"); BufferedReader n = new BufferedReader(new InputStreamReader(System.in)); String str2 = n.readLine(); //年齢入力 System.out.println("年齢を入力してください。"); BufferedReader o = new BufferedReader(new InputStreamReader(System.in)); String str3 = o.readLine(); //住所入力 System.out.println("住所を入力してください。"); BufferedReader a = new BufferedReader(new InputStreamReader(System.in)); String str4 = a.readLine(); //ファイルに書き込み try{ File file = new File("addressdata.txt"); FileWriter filewriter = new FileWriter(file, true); filewriter.write(str2+","+str3+","+str4+"\r\n"); filewriter.close(); }catch(IOException e){ System.out.println("e"); } } } } これをカプセル化し 各機能ごとにメソッドを分けて作ろうかなと思っています。 結果の出力はmainでやる予定です。

  • 文字コードを変換する

    //このプログラムは、指定されたURLのソースを読むプログラムです。 import java.io.*; //入出力のAPIを実装するのに用います。 import java.net.*; //ネットワークに関するAPIを実相するのに用います。 import java.lang.*; class rss { public static void main(String args[]) { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); try{ System.out.println("読み込みたいRSSのURIを入力してください。"); String address = br.readLine(); //URLを標準入力から読み込みます。 URL url = new URL(address); InputStream uin = url.openStream(); BufferedReader in = new BufferedReader(new InputStreamReader(uin)); String source; //ソースファイル一行を格納する文字列変数です。 //指定したURLのソースファイル標準出力します。 while((source = in.readLine()) != null ){ System.out.println(source); } } catch(IOException e){ System.out.println("ソースを読みこめませんでした。"); } } } というプログラムを作ったのですが、 一部のソースファイルが文字化けを起こします。 そのソースがどの文字コードでできているか? そして、それをどうやったら変換したらいいかを 教えてほしいのです。 お願いします。

    • ベストアンサー
    • Java
  • このアクセスの仕方はOK?

    以下はプログラムの一部ですが、気になったことがあって、 ・指定しているURLに拡張子がないこと。 ・拡張子がなくてもHTML文書はダウンロードしていいのか。 です。実際にプログラムを組んでダウンロードできたんですが、こういうやりかたでやっていいのかよく考えるうちに不安になったので、質問させていただきました。ご教授お願いします。 URL url = new URL("http://ja.wikipedia.org/wiki/SMAP"); InputStreamReader in = new InputStreamReader(url.openStream(),"UTF-8"); BufferedReader br = new BufferedReader(fr); while((line = br.readLine()) != null){ ......

    • ベストアンサー
    • Java
  • ある文字コードのHTMLを読み込むと文字バケが…

    例えばこのgooの文字コードはEUC-JPなのですが、これを以下のプログラム(抜粋)で読み込むと日本語がおかしくなります。 try {  URL url = new URL(tf.getText());  BufferedReader urlin = new BufferedReader(new InputStreamReader(url.openStream()));  String result = "";  while((result = urlin.readLine()) != null){   System.out.println(result); }  urlin.close(); } Shift-JISだと正常に表示できるのですが… どうかアドバイスをお願いします。

    • ベストアンサー
    • Java
  • 今勉強中のjavaで。わからないことがあります。

    import java.io.*; class Ireru { public static void main(String args[]) throws IOException{ System.out.println("あなたは何歳ですか?"); BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); String str1 = br.readLine(); int num =Integer.parseInt(str1); System.out.println("あなたは" + num +"歳です。"); } } ------------------------------- import java.io.*; class Ireru { public static void main(String args[]) throws IOException{ System.out.println("あなたは何歳ですか?"); BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); String str1 = br.readLine(); System.out.println("あなたは" + str1 +"歳です。"); } } なぜ下では悪いのですか?なぜnum をつかないといけないかがわかりません。正確には str1とnumの違いがわからなくて困っています。何が混乱の原因ですか?

    • ベストアンサー
    • Java