Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Java: Парсер google

Модерирует : ShIvADeSt

 Версия для печати • ПодписатьсяДобавить в закладки

Открыть новую тему     Написать ответ в эту тему

Spy686



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Код:
 
import java.net.*;
import java.io.*;
 
 
public class test {
    public static void main(String[] args) throws Exception {
 
        URL oracle = new URL("http://www.google.com");
        BufferedReader in = new BufferedReader(new InputStreamReader(oracle.openStream()));
 
        String inputLine;
        while ((inputLine = in.readLine()) != null)
            System.out.println(inputLine);
        in.close();
    }
}
 

 
так работает, но тут нет ничего нежного.
 
Если прописать запрос к выдаче:
 

Код:
 
import java.net.*;
import java.io.*;
 
 
public class test {
    public static void main(String[] args) throws Exception {
 
        URL oracle = new URL("https://google.com/search?num=10&newwindow=1&site=webhp&source=hp&q=ключевоеслово");
        BufferedReader in = new BufferedReader(new InputStreamReader(oracle.openStream()));
 
        String inputLine;
        while ((inputLine = in.readLine()) != null)
            System.out.println(inputLine);
        in.close();
    }
}
 
 

 
 
то ошибки:

Код:
 
Exception in thread "main" java.io.IOException: Server returned HTTP response code: 403 for URL: https://www.google.by/search?num=10&newwindow=1&site=webhp&source=hp&q=%3F%3F%3F%3F%3F%3F%3F%3F%3F%3F%3F%3F%3F&gws_rd=cr&ei=-J5dVazCEKaGywOOv4DYCg
    at sun.net.www.protocol.http.HttpURLConnection.getInputStream0(HttpURLConnection.java:1839)
    at sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1440)
    at sun.net.www.protocol.https.HttpsURLConnectionImpl.getInputStream(HttpsURLConnectionImpl.java:254)
    at java.net.URL.openStream(URL.java:1038)
    at TestPack.test.main(test.java:13)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:497)
    at com.intellij.rt.execution.application.AppMain.main(AppMain.java:140)
 
Process finished with exit code 1
 

 
Как быть?
 
Добавлено:
Предполагаю, надо прописать user agent и все такое.
 
Возможно есть готовый вариант парсера?

Всего записей: 193 | Зарегистр. 17-12-2010 | Отправлено: 12:02 21-05-2015
Spy686



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
С предыдущей задачей справился.
 
 
Сейчас предстоит задача распарсить.
 
Вот пример что необходимо сделать.
 
Регулярное выражение
 
<[tT][iI][tT][lL][eE]>.*</[tT][iI][tT][lL][eE]>
Результат
 
<HEAD>
<TITLE>Ben Forta's Homepage</TITLE>
</HEAD>
 
Регулярное выражение <[tT][iI][tT][lL][eE]>.*</[tT][iI][tT][lL][eE]> соответствует открывающему тегу <TITLE> (на верхнем, нижнем или на обоих регистрах), закрывающему тегу <TITLE> и любому тексту между ними. Кажется, этот шаблон работал правильно.
 
Нужен текст заголовка, а найденный нами текст содержит также открывающий и закрывающий теги заголовка.  
 
Можно ли возвратить только текст заголовка?
 
Помогите пожалуйста

Всего записей: 193 | Зарегистр. 17-12-2010 | Отправлено: 00:01 22-05-2015
NeoAnomaly

Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Spy686 для начала почему бы не использовать регистронезависимый режим? Выражение упростится, нежели городить шаблон из допустимых символов. По поводу выделения только нужного текста тебе может помочь lookbehind/lookahead, т.е. в твоём примере:

Код:
(?<=<[tT][iI][tT][lL][eE]>)(.*)(?=</[tT][iI][tT][lL][eE]>)

 
Но вообще парсить html регулярками - это ИМХО не гуд, с java я не знаком, но начал бы с этого

Всего записей: 418 | Зарегистр. 23-03-2010 | Отправлено: 10:05 22-05-2015 | Исправлено: NeoAnomaly, 10:16 22-05-2015
Spy686



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Спасибо большое.
Помогло )
 

Всего записей: 193 | Зарегистр. 17-12-2010 | Отправлено: 22:36 22-05-2015
Открыть новую тему     Написать ответ в эту тему

Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Java: Парсер google


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru