Извлечение данных из URL перенаправления в Java дает ошибку 403 - PullRequest
0 голосов
/ 21 февраля 2012

Мне нужно получить HTML-страницу с первым результатом поиска в Google.
Для этого я использую Google " I'm Feeling Lucky ", поэтому в основном добавляю & btnI к URL-адресу поискового запроса. Например, http://www.google.com/search?q=%22movie%22+site:amazon.com&btnI перенаправляет на страницу с фильмами на amazon.com

Пусть это будет наш searchQuery;

searchQuery =  "http://www.google.com/search?q=%22movie%22+site:amazon.com&btnI";
URL url = new URL(searchQuery);
InputStream response = url.openStream();
BufferedReader reader = new BufferedReader(new InputStreamReader(response));
for (String line; (line = reader.readLine()) != null;) {
    System.out.println(line);
}
reader.close();

Я получаю
Ошибка: сервер вернул код ответа HTTP: 403 для URL: http://www.google.com/search?q=%22movie%22+site:amazon.com&btnI
Нужна помощь, даже если есть лучший подход ... дайте мне знать !!

1 Ответ

1 голос
/ 21 февраля 2012

Попробуйте использовать HttpURLConnection .

Затем #setFollowRedirects(true) и настройте пользовательский агент для чего-то вроде Firefox или IE.

Например:

URLConnection connection = new URL(searchQuery).openConnection();
connection.setFollowRedirects(true);
connection.setRequestProperty("User-Agent", 
      "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:10.0.2) Gecko/20100101 Firefox/10.0.2");
connection.connect();
InputStream response = connection.getInputStream();
...
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...