4

Google から回答を得るための Java コードを作成しようとしています。私が書いたコードは英語のみで問題なく動作しますが、ヘブライ文字を追加しようとすると、Google の Web サイトで書いたときとは異なる結果が得られます。
コードは次のとおりです。

String address = "https://ajax.googleapis.com/ajax/services/search/web?v=1.0&q=";
String charset = "UTF-8";
URL url;

try 
{
    url = new URL(address + URLEncoder.encode(artistAndSong + site, charset));
          //The url seems right, and it's the same as the url that appear on the web
    Reader reader = new InputStreamReader(url.openStream(), charset);
    GoogleResults results = new Gson().fromJson(reader, GoogleResults.class);
    res =(results.getResponseData().getResults().get(0).getUrl());
          //This is the part where I see that the answers are not the same
}

class GoogleResults{

private ResponseData responseData;
public ResponseData getResponseData() { return responseData; }
public void setResponseData(ResponseData responseData) { this.responseData = responseData; }
public String toString() { return "ResponseData[" + responseData + "]"; }

static class ResponseData {
    private List<Result> results;
    public List<Result> getResults() { return results; }
    public void setResults(List<Result> results) { this.results = results; }
    public String toString() { return "Results[" + results + "]"; }
}

static class Result {
    private String url;
    private String title;
    public String getUrl() { return url; }
    public String getTitle() { return title; }
    public void setUrl(String url) { this.url = url; }
    public void setTitle(String title) { this.title = title; }
    public String toString() { return "Result[url:" + url +",title:" + title + "]"; }
}
}

アイデアはありますか?私はすでに数日間それを解決しようとしています...(また、ユニコードで遊んでみましたが、解決していないようです..)
ありがとう!

4

3 に答える 3

6

Google の回答は、以前の検索に基づいてパーソナライズされています。アカウントでログインしている場合と、ログインしていない場合 (たとえば、Chrome を使用している場合はシークレット ウィンドウを試してください) で同じものを検索してみてください。結果は異なるはずです。

それがあなたに起こっていることだと思います。

コードに明らかな欠陥はありません。

于 2013-06-13T17:26:42.853 に答える
0

Google API は、Google Web サイトで取得した結果とは非常に異なる結果を取得しています。これは「SEOの世界」でよく知られています。SEO に取り組んでいる人々が独自のクローラーを作成する主な理由であるため、これは非常に悲しいことです。これらのプログラムは、Google API ではなく Google Web サイトに対してクエリを実行しています。captchaGoogle 検索サイトで見たことがありますか? 「あなたのネットワークからの自動化されたトラフィックを検出しました。インターネット サービス プロバイダに連絡してください。」のようなメッセージで Google 検索サイトにブロックされたことはありませんか? Google が Web サイトと API で同じ結果を取得する場合、SEO 企業は Web サイトをだまして正しい結果を取得することをやめます。

だから答えはThere is no bug in your code - this is Google's fault.

于 2013-06-22T20:43:01.223 に答える
0

次の条件の 1 つまたは複数が発生する可能性があります。

  • @darijanが言ったように:ログインしているかどうかにかかわらず
  • Cookie が既に存在するかどうか
  • たぶん、ある種の UserAgent 差別
  • Google はアルゴリズムのアップグレードを段階的に展開しているため、Search API は Web サイトのものとまったく同じバージョンを使用していないことが想像できます。
于 2013-06-20T10:13:20.783 に答える