0

現在の Google ページをプログラムで取得したいと考えています。さまざまなプログラム言語で多くの手法を使用していますが、正しい(現在の)Google ページを取得することはできません。

Java コードの例

    public class GoogleParser {

public static void main(String[] args){
      GoogleParser googleParser = new GoogleParser();
      googleParser.execute();
}
public void execute(){
String[] params = {"ankara nüfusu"};    
     final URL url = encodeGoogleQuery(params);

       System.out.println("Downloading [" + url + "]...\n\n\n\n\n");
        try {
final String html = downloadString(url);
System.out.println(html);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
private static String downloadString(final InputStream stream) throws IOException {
final ByteArrayOutputStream out = new ByteArrayOutputStream();
int ch;
while (-1 != (ch = stream.read()))
    out.write(ch);
return out.toString();
}
  private static String downloadString(final URL url) throws IOException {
       final String agent = "Mozilla/21.0 (Windows; U; Windows 7; en-US)";
       final URLConnection connection = url.openConnection();
       connection.setRequestProperty("User-Agent", agent);
       final InputStream stream = connection.getInputStream();
       return downloadString(stream);
   }

private static URL encodeGoogleQuery(final String[] args) {
        try {
            final StringBuilder localAddress = new StringBuilder();
            localAddress.append("/search?q=");

            for (int i = 0; i < args.length; i++) {
                final String encoding = URLEncoder.encode(args[i], "UTF-8");
                localAddress.append(encoding);
                if (i + 1 < args.length)
                    localAddress.append("+");
            }

            return new URL("http", "www.google.com", localAddress.toString());

        } catch (final IOException e) {
            // Errors should not occur under normal circumstances.
            throw new RuntimeException(
                    "An error occurred while encoding the query arguments.");
        }
    }
}

Javaコードはこのhtmlページを取得します Google 現在のページ

 First image Java Code Result Page
 Second image Google Current Page

Java が Google から取得する HTML ページは、現在の Google ページとは異なります。

  1. 異なる結果
  2. Google Nowの結果を含まない (4,551ミリオン(2011)部分)
  3. Google グラフの結果が含まれていません (右側の Ankara 情報)
  4. 現在より古いページ
  5. ナビゲーション プロパティ (Web、画像、ビデオ) 左側、通常は下の検索バー

プログラムでJava言語を使用してGoogleの現在の(最後の)ページを取得する方法はありますか。ただし、問題を解決するには、他の言語のソリューションが重要です。

ご回答ありがとうございます

4

1 に答える 1

0

Google は、リクエストの送信者を検出する点で優れています。

  1. ブラウザと同じ Cookie を送信していることを確認してください
  2. 同じまたは有効なブラウザ エージェント文字列を送信していることを確認してください
于 2013-06-22T07:35:59.320 に答える