- 締切済み
webページのソースを取得するプログラムがわかりません..
今,webページのソースを取得するプログラムを作成しているのですが,分からず困っています. yahooのイメージでこちらが入力した文字列を検索し,その検索結果のページのソースを取得したいと思っています.. 今 ↓↓↓↓ import java.net.*; import java.io.*; import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; import java.util.ArrayList; import java.util.List; import java.util.regex.*; public class Gazou2 { static List<String> list = new ArrayList<String>(); public static void main(String args[]) throws IOException { System.out.println("日本文を入力して下さい"); BufferedReader nyu = new BufferedReader(new InputStreamReader(System.in)); String word = nyu.readLine(); //入力された文字のエンコードを行う String urlWord = URLEncoder.encode(word,"UTF-8"); int i=10; String SearchURL = "GET http://image-search.yahoo.co.jp/search?ei=UTF-8&fr=top_ga1&p="+urlWord+"&start="+i+"&sa=N"; getSource(SearchURL); } public static void getSource(String line) { String headStart = ".*<h3 class=r>.*";//ヘッダ1開始位置(正規表現, 指定) int port = 80; int count=0; BufferedReader urlIn; String htmlResponse=""; Matcher matcher; try{ //接続 Socket socket = new Socket(InetAddress.getByName("image-search.yahoo.co.jp"), port);//getByNameを使う方がよい //http://image-search.yahoo.co.jp/ OutputStream uout = socket.getOutputStream(); OutputStreamWriter wout = new OutputStreamWriter(uout); wout.write(line); //wout.write(" HTTP/1.0\r\nAccept: */*\r\nAccept-Language: ja\r\nUser-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322; .NET CLR 2.0.50727; Lunascape 4.7.3)\r\nHost: www.google.co.jp\r\nProxy-Connection: Keep-Alive\r\n"); wout.write(" HTTP/1.1\r\nAccept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/x-shockwave-flash, application/vnd.ms-excel, application/vnd.ms-powerpoint, application/msword, application/x-silverlight, */*\r\nAccept-Language: ja\r\nUser-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 1.1.4322; .NET CLR 2.0.50727; Lunascape 4.7.3)\r\nUA-CPU: x86\r\nAccept-Encoding: gzip, deflate\r\nProxy-Connection: Keep-Alive\r\nHost: images.google.co.jp\r\n"); wout.write("\r\n"); wout.flush(); urlIn = new BufferedReader(new InputStreamReader(socket.getInputStream(), "UTF-8")); htmlResponse = urlIn.readLine(); //headStartまで移動 while(htmlResponse.indexOf(headStart)<0){ htmlResponse = urlIn.readLine(); System.out.println(htmlResponse); //count++; } } catch(Exception e){ System.err.println(e); } } } というプログラムを教えていただき,実行しているのですが,結果が文字化けしてしまい,文字化けの直し方も分からず正しい出力がされているかわかりません(j_j) 一体何が悪いのでしょうか?分かる方いらっしゃったら教えて下さいm(_ _)m また,ソースを取得するプログラムをご存知の方教えていただけないでしょうか??
- みんなの回答 (1)
- 専門家の回答
みんなの回答
- hogejo
- ベストアンサー率42% (11/26)
> String word = nyu.readLine(); > > //入力された文字のエンコードを行う > String urlWord = URLEncoder.encode(word,"UTF-8"); 上記変数は使っているのですか? それはともかく、wget というプログラムが便利です。 wget <url> でソースを取得できます。 (Linuxでしか使ったことないですが、多分windows版もあるでしょう。Cygwinでは使えました。)