みんなの「教えて(疑問・質問)」にみんなで「答える」Q&Aコミュニティ

こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

締切り済みの質問

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
また,ソースを取得するプログラムをご存知の方教えていただけないでしょうか??

投稿日時 - 2008-12-09 18:25:47

QNo.4542410

すぐに回答ほしいです

このQ&Aは役に立ちましたか?

1人が「このQ&Aが役に立った」と投票しています

回答(1)

ANo.1

> String word = nyu.readLine();
>
> //入力された文字のエンコードを行う
> String urlWord = URLEncoder.encode(word,"UTF-8");

上記変数は使っているのですか?

それはともかく、wget というプログラムが便利です。
wget <url> でソースを取得できます。
(Linuxでしか使ったことないですが、多分windows版もあるでしょう。Cygwinでは使えました。)

投稿日時 - 2008-12-10 00:17:17

あなたにオススメの質問