2

私はGoogleで検索しようとしています-画像はいくつか異なり、JavaGoogleAPIを使用してすべてのクエリの最初の結果を保存します。

私はなんとかGoogleで検索し、検索結果を含むjsonオブジェクトを取得しました。オブジェクトには、画像アドレスではなく、画像を含むWebサイトが含まれています

コード:

URL url = new URL("https://ajax.googleapis.com/ajax/services/search/images?" +
                    "v=1.0&q="+properties.getProperty(Integer.toString(i))+"&userip=IP");
            URLConnection connection = url.openConnection();
            connection.addRequestProperty("Referer", "images.google.com");

        String line;
        StringBuilder builder = new StringBuilder();
        BufferedReader reader = new BufferedReader(new InputStreamReader(connection.getInputStream()));
        while((line = reader.readLine()) != null) {
        builder.append(line);
        }

        JSONObject json = new JSONObject(builder.toString())

画像リンクがあれば画像を保存する方法も知っています。

私の問題は、Webアドレスではなく、最初の(または2番目の)画像の正しいアドレスを取得する方法です(例www.yadayadayada.com/image.png)

10倍

4

1 に答える 1

10

JSONインターフェースについては、JSON開発者ガイドで説明されています。特に、JSONリファレンスセクションでは、応答形式と保証フィールドについて概説しています。プロパティの値を使用できurlます。

URLを指定すると、 ImageIOを使用してイメージを読み取り、ディスクに書き込むことができます。これが関連するチュートリアルです。

画像の操作と表示が必要ない場合は、HttpURLConnectionを使用してファイルをダウンロードするだけで済みます。

編集:例

以下は、質問に含まれているコードに基づく簡単な例です。検索を実行し、最初の画像を表示します。

import java.awt.image.BufferedImage;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.URL;
import java.net.URLConnection;

import javax.imageio.ImageIO;
import javax.swing.ImageIcon;
import javax.swing.JOptionPane;

public class TestImage {

    public static void main(String[] args) {
        try{
            URL url = new URL("https://ajax.googleapis.com/ajax/services/search/images?v=1.0&q=Godfather");
            URLConnection connection = url.openConnection();

            String line;
            StringBuilder builder = new StringBuilder();
            BufferedReader reader = new BufferedReader(new InputStreamReader(connection.getInputStream()));
            while((line = reader.readLine()) != null) {
                builder.append(line);
            }

            JSONObject json = new JSONObject(builder.toString());
            String imageUrl = json.getJSONObject("responseData").getJSONArray("results").getJSONObject(0).getString("url");

            BufferedImage image = ImageIO.read(new URL(imageUrl));
            JOptionPane.showMessageDialog(null, "", "", JOptionPane.INFORMATION_MESSAGE, new ImageIcon(image));
        } catch(Exception e){
            JOptionPane.showMessageDialog(null, e.getMessage(), "Failure", JOptionPane.ERROR_MESSAGE);
            e.printStackTrace();
        }
    }
}
于 2012-07-14T18:04:13.070 に答える