Модераторы: LSD, AntonSaburov

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> написание программы для поиска инфы, нужна помощь 
:(
    Опции темы
Berliner
Дата 17.11.2005, 10:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 803
Регистрация: 18.5.2005

Репутация: 1
Всего: 2



Здраствуйте надо написать программу для поиска инфы в инете. Программа дролжна делать следующее
1. юзер ввдодит в окно программы текст например Audi100 программа должна найти в google инфу по Audi 100 после єтого вывести в текстовый файл такие поля.

Ссылку Заголовок Описание сайта
www.audi.de Audi WV Nur Wir........

Меня попросили сделать такую вещь. Сразу оговорюсь для меня это не коммерческое предложение. Мат выгоды с этого не имею

Подскажите с чего начать и какие классы использовать. Java только начал учить. Думаю сделать это апплетом.
PM   Вверх
KostenkoSergey
Дата 17.11.2005, 11:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 290
Регистрация: 31.10.2005
Где: Kiev

Репутация: 3
Всего: 8



я диплом такой писал smile))) тока у меня не в гугле искал, а веб в базу индексировал smile))
ну а твоя задача на самом деле сводится к следующему :
1. формируешь запрос - шлёшь на гугл используя, что то типа :
Код

      String data = "";
      data += "param="           + URLEncoder.encode("AUDI"   , "UTF-8");
      URL url = new URL("http://google.com");
      HttpURLConnection urlConnect = (HttpURLConnection)url.openConnection();
      urlConnect.setDoOutput(true);
      urlConnect.setDoInput(true);
      OutputStreamWriter wr = new OutputStreamWriter(urlConnect.getOutputStream());
      wr.write(data);
      wr.flush();

тока посмотришь какие там параметры надо передать в поисковик.
А потом получаешь ответ
Код

      // --- get the response
      BufferedReader is = new BufferedReader(new InputStreamReader(urlConnect.getInputStream()));
      String line;
      StringBuffer sb = new StringBuffer();
      while((line = is.readLine()) !=null){
          System.out.println(line);
          sb.append(line);
        }

я для простоты примера всё в строку записал, а ты разпарсишь
его (ответ) как тебе удобно ....
а ваще я встречал
подобные апплетики ....

Это сообщение отредактировал(а) KostenkoSergey - 17.11.2005, 11:30
PM ICQ   Вверх
Berliner
Дата 17.11.2005, 13:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 803
Регистрация: 18.5.2005

Репутация: 1
Всего: 2



Спасибо! буду пытаться.
PM   Вверх
Stampede
Дата 17.11.2005, 15:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Гносеолог
**


Профиль
Группа: Участник Клуба
Сообщений: 963
Регистрация: 25.4.2005
Где: Calgary, Alberta, Canada

Репутация: 24
Всего: 144



Цитата(Berliner @ 17.11.2005, 10:09)
программа должна найти в google инфу по Audi 100 после єтого вывести в текстовый файл такие поля


Для этого идеально подойдет Google Web API. Это фактически веб-сервисный клиент к их машине поиска. По описанию выглядит очень просто. Единственно, по условию лицензии там есть ограничение: максимум 1000 запросов в сутки. Если тебя это устроит - то полный вперед smile

PM WWW   Вверх
Berliner
Дата 17.11.2005, 16:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 803
Регистрация: 18.5.2005

Репутация: 1
Всего: 2



А как в первом варианте писалось не пойдет?
PM   Вверх
Stampede
Дата 17.11.2005, 18:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Гносеолог
**


Профиль
Группа: Участник Клуба
Сообщений: 963
Регистрация: 25.4.2005
Где: Calgary, Alberta, Canada

Репутация: 24
Всего: 144



Цитата(Berliner @ 17.11.2005, 16:42)
А как в первом варианте писалось не пойдет?


Да оно, может, и пойдет, но как ты собираешься парсить HTML? Вот смотри, как выглядит отдельная позиция в выдаче гугля:

Код

<p class=g><!--m--><a href="http://www.amazon.com/gp/browse.html?node=3435361&">Amazon.com Help</a>
<br><font size=-1>Amazon Mechanical Turk does this, providing a <b>web</b> services <b>API</b> for computers to
<br>integrate Artificial Artificial Intelligence directly into their processing. <b>...</b>
<br><font color=#008000><span dir=ltr>www.amazon.com/gp/browse.html?node=3435361&amp;</span> - 32k - </font>
<nobr>  <a class=fl href="http://64.233.167.104/search?q=cache:6WPQsJfIGoIJ:www.amazon.com/gp/browse.html%3Fnode%3D3435361%26+web+api&hl=en&client=firefox-a">Cached</a> - 
<a class=fl href="/search?hl=en&hs=Tv5&lr=&client=firefox-a&rls=org.mozilla:en-US:official&q=related:www.amazon.com/gp/browse.html%3Fnode%3D3435361%26">Similar&nbsp;pages</a></nobr></font><!--n--> 


Ты, конечно, можешь типа искать элемент <p> с классом "g", выдирать оттуда линк, потом в качестве описания брать все от конца линка до "<br><font color=#008000>", ну и так далее.

Но я бы после такого навсегда потерял сон, потому что измени гугловцы формат выдачи - и фсе, программа просто перестанет работать.

Так штаааа...

PM WWW   Вверх
Berliner
Дата 18.11.2005, 14:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 803
Регистрация: 18.5.2005

Репутация: 1
Всего: 2



Ошибку выдает я думаю что неправильно исключения обработал. Код ошибки сейчас не могу дать комп в другой комнате, а там интернета нет. Подскажите пожалуста что не правильно?
Код

package u;

/**
 *
 * @author Administrator
 */
import java.lang.*;

public class Main {
    
    /** Creates a new instance of Main */
    public Main() {
       
    }
    
    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
     try{
    URL address = new URL("http://java.sun.com/index.html");
     }
     catch (MalformedURLException e1){
         System.out.println("Не могу подключится !");
     }
        // TODO code application logic here
        
    }
    
}



Это сообщение отредактировал(а) Berliner - 18.11.2005, 14:09
PM   Вверх
batigoal
Дата 18.11.2005, 14:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Нелетучий Мыш
****


Профиль
Группа: Участник Клуба
Сообщений: 6423
Регистрация: 28.12.2004
Где: Санктъ-Петербургъ

Репутация: 24
Всего: 151



У меня прошло без ошибок.


--------------------
"Чтобы правильно задать вопрос, нужно знать большую часть ответа" (Р. Шекли)
ЖоржЖЖ
PM WWW   Вверх
Berliner
Дата 18.11.2005, 16:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 803
Регистрация: 18.5.2005

Репутация: 1
Всего: 2



упс ....сейчас код ошибки кину(все на дискетке принесу ошибку)
PM   Вверх
Berliner
Дата 18.11.2005, 16:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 803
Регистрация: 18.5.2005

Репутация: 1
Всего: 2



сразу вместе код и ошибка! почему NEtBeans ругается?

Код

init:
deps-jar:
Compiling 1 source file to C:\Documents and Settings\Administrator\? Ў®зЁ© бв®«\ji\build\classes
C:\Documents and Settings\Administrator\? Ў®зЁ© бв®«\ji\src\ji\Main.java:23: cannot find symbol
symbol  : class URL
location: class ji.Main
    URL address = new URL("http://java.sun.com/index.html");
C:\Documents and Settings\Administrator\? Ў®зЁ© бв®«\ji\src\ji\Main.java:23: cannot find symbol
symbol  : class URL
location: class ji.Main
    URL address = new URL("http://java.sun.com/index.html");
C:\Documents and Settings\Administrator\? Ў®зЁ© бв®«\ji\src\ji\Main.java:25: cannot find symbol
symbol  : class MalformedURLException
location: class ji.Main
     catch (MalformedURLException e1){
3 errors
‘?Ћ?ЉЂ ‡Ђ‚…??…?Ђ ?…“„Ђ—?Ћ (®ЎйҐҐ ўаҐ¬п: 0 бҐЄг­¤)



package ji;

import java.lang.*;

public class Main {
    
    /** Creates a new instance of Main */
    public Main() {
       
    }
    
    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
     try{
    URL address = new URL("http://java.sun.com/index.html");
     }
     catch (MalformedURLException e1){
         System.out.println("Rabotaet!");
     }
         
        
    }
    
}





PM   Вверх
bars_uz
Дата 18.11.2005, 17:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 106
Регистрация: 26.3.2005
Где: Tashkent

Репутация: нет
Всего: нет



Bratan poprobue:

Код

package ji;

import java.net.URL;
import java.net.MalformedURLException;

public class Main {
    
    /** Creates a new instance of Main */
    public Main() {
       
    }
    
    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
     try{
    URL address = new URL("http://java.sun.com/index.html");
     }
     catch (MalformedURLException e1){
         System.out.println("Rabotaet!");
     }
         
        
    }
    
}

PM MAIL ICQ   Вверх
KostenkoSergey
Дата 18.11.2005, 18:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 290
Регистрация: 31.10.2005
Где: Kiev

Репутация: 3
Всего: 8



наверное ты через проксю какую то ходишь... да ?

Добавлено @ 18:45
Цитата(Stampede @ 17.11.2005, 18:53)
Да оно, может, и пойдет, но как ты собираешься парсить HTML?


дык это разве проблема ?
Код

package kostenko.diplom.spider;
import javax.swing.text.html.HTMLEditorKit;
import javax.swing.text.html.HTML;
import javax.swing.text.MutableAttributeSet;
/**
 * HTML parsing proceeds by calling a callback for
 * each and every piece of the HTML document.  This
 * simple callback class simply prints an indented
 * structural listing of the HTML data.
 */
class HTMLParseLister extends HTMLEditorKit.ParserCallback {
....

а ваще ж и любым саксом можно ?
тем паче универсальность ему никчему - ответ всегда в одинаковом виде будет....


PM ICQ   Вверх
Guest
Дата 21.11.2005, 13:49 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











вот что уже написал, вроде компилиться без ошибок. написал : вводим адрес гугла , и подключаемся А дальше? натолкните на мысль какие классы использовать и логику подскажите плиз. Сори я только учусь

Код

package ji;

import java.net.*;
import java.lang.*;
import java.io.*;

public class Main {
    
    /** Creates a new instance of Main */
    public Main() {
       
    }
    
    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
     try{
    URL address = new URL("http://google.com");
    try{
    address.openConnection();
    }
    catch (IOException e2){ 
    System.out.println("You don't have connection");
    }
       }
    
     catch (MalformedURLException e1){
         System.out.println("Have a look at address ");
     }
      
     
     } 
      
    
    }
    



  Вверх
KostenkoSergey
Дата 22.11.2005, 09:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 290
Регистрация: 31.10.2005
Где: Kiev

Репутация: 3
Всего: 8



Цитата(Guest @ 21.11.2005, 13:49)
какие классы использовать и логику подскажите плиз

уже ж тебе ответили и примеры дали, или я вопрос не вразумел?
smile
PM ICQ   Вверх
Berliner
Дата 22.11.2005, 10:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 803
Регистрация: 18.5.2005

Репутация: 1
Всего: 2



ок вроде подконектился к гугглу а как запрос сформировать и отослать?

Код

String data = "";   //а что тут?
      data += "param="           + URLEncoder.encode("AUDI"   , "UTF-8");//Вот тут запрос формируется?
      URL url = new URL("http://google.com");
      HttpURLConnection urlConnect = (HttpURLConnection)url.openConnection();//установливаем коннект?
      urlConnect.setDoOutput(true);//а что тут делаем?
      urlConnect.setDoInput(true);//и тут?
      OutputStreamWriter wr = new OutputStreamWriter(urlConnect.getOutputStream());
      wr.write(data);
      wr.flush();




я в твоем примере не все понял. просто знаний не хватает. в коментах я написал где не понял ,не мог бы ты мне пояснить подробнее,пожалуста?(там где я написал в коментариях). ну очень хочется научится java . Я и сам пытаюсь.
PM   Вверх
KostenkoSergey
Дата 22.11.2005, 11:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 290
Регистрация: 31.10.2005
Где: Kiev

Репутация: 3
Всего: 8



smile
Для поиска Тебе надо обратиться по такому урлу :
http://www.google.com.ua/search?q=audi
Для этого :
Код

String data = "q=" + URLEncoder.encode("AUDI" , "UTF-8");//Вот тут формируем параметр запроса
      URL url = new URL("http://google.com/search"); // url
    /**
     * Returns a <code>URLConnection</code> object that represents a
     * connection to the remote object referred to by the <code>URL</code>.
     *
     * <p>A new connection is opened every time by calling the
     * <code>openConnection</code> method of the protocol handler for
     * this URL.
     *
     * <p>If for the URL's protocol (such as HTTP or JAR), there
     * exists a public, specialized URLConnection subclass belonging
     * to one of the following packages or one of their subpackages:
     * java.lang, java.io, java.util, java.net, the connection
     * returned will be of that subclass. For example, for HTTP an
     * HttpURLConnection will be returned, and for JAR a
     * JarURLConnection will be returned.
     *
     * @return     a <code>URLConnection</code> to the URL.
     * @exception  IOException  if an I/O exception occurs.
     * @see        java.net.URL#URL(java.lang.String, java.lang.String,
     *             int, java.lang.String)
     * @see        java.net.URLConnection
     * @see java.net.URLStreamHandler#openConnection(java.net.URL)
     */
      HttpURLConnection urlConnect = (HttpURLConnection)url.openConnection();//установливаем коннект!
    /**
     * Sets the value of the <code>doOutput</code> field for this 
     * <code>URLConnection</code> to the specified value. 
     * <p>
     * A URL connection can be used for input and/or output.  Set the DoOutput
     * flag to true if you intend to use the URL connection for output,
     * false if not.  The default is false.
     *
     * @param   dooutput   the new value.
     * @throws IllegalStateException if already connected
     * @see #getDoOutput()
     */
      urlConnect.setDoOutput(true);//а что тут делаем?
    /**
     * Sets the value of the <code>doInput</code> field for this 
     * <code>URLConnection</code> to the specified value. 
     * <p>
     * A URL connection can be used for input and/or output.  Set the DoInput
     * flag to true if you intend to use the URL connection for input,
     * false if not.  The default is true.
     *
     * @param   doinput   the new value.
     * @throws IllegalStateException if already connected
     * @see     java.net.URLConnection#doInput
     * @see #getDoInput()
     */
      urlConnect.setDoInput(true);//и тут?
      OutputStreamWriter wr = new OutputStreamWriter(urlConnect.getOutputStream());
      wr.write(data);
      wr.flush();



PM ICQ   Вверх
Berliner
Дата 25.11.2005, 15:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 803
Регистрация: 18.5.2005

Репутация: 1
Всего: 2



Спасиб-вроде разбираюсь. А можно плиз очень подробно пояснить две строки, а именно ,я например понял : 1- форма запрос а 2-устанавливаем коннект. но в 1 строке я вообще не понял зачем там data = "q=" smile
Код

String data = "q=" + URLEncoder.encode("AUDI" , "UTF-8");
HttpURLConnection urlConnect = (HttpURLConnection)url.openConnection;


"разжуте" пожалуста.

Это сообщение отредактировал(а) Berliner - 25.11.2005, 15:56
PM   Вверх
chief39
Дата 29.11.2005, 10:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


карманная тигра
***


Профиль
Группа: Участник Клуба
Сообщений: 1631
Регистрация: 20.5.2005
Где: Киев

Репутация: 15
Всего: 77



Цитата(Berliner @ 25.11.2005, 15:47)
Спасиб-вроде разбираюсь. А можно плиз очень подробно пояснить две строки, а именно ,я например понял : 1- форма запрос а 2-устанавливаем коннект. но в 1 строке я вообще не понял зачем там data = "q="

Насколько я понял вышеприведеный код:
Мы создаём URL, который, к примеру указывает на какой-то ресурс(например сервлет, или что у них там, на гугле). Но сам по себе запрос ничерта не значит без параметров. Это как будто нажать кнопку submit при пустой форме(вернее при отсутствии полей на форме вообще).
А вот в DATA формируем строку запроса, которая в обычных http запросах идёт после "?". Т.е. передаём вроде как данные из формы(параметр=значение).
Поскольку искать твоя система будет не только ауди, то data будет содержать то что ты ищешь. Тысызыть, динамическая часть запроса.
Итого твой клиент будет посылать то же что послала бы форма с инпут-полем "q" в которое ты ввёл "audi". Ну а encode - специально написанная фишка для твоего случая, ибо самотужки перекодировать строку в гекса-представление замахаешься(ты ведь видел что если в поисковике вводишь русские символы - они отображаются как %45%4A%32 и т.д.)
Поэтому в своём клиенте, в поле на какой-нить формочке вводишь то, что ищешь, и запихиваешь в первый параметр "encode" (вместо "ауди").
И будет тебе счастье smile



--------------------
Люди - это свечи. Они либо горят, либо их - в жопу!(с)

PM MAIL   Вверх
gEndelf
Дата 29.11.2005, 11:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 54
Регистрация: 7.7.2005
Где: the world

Репутация: нет
Всего: 3



А по поводу парсинга HTML - я где на просторах Internet встречал набор классов для парсинга и удобной обработки.
только адрес не припомню ...
PM MAIL WWW   Вверх
Berliner
Дата 29.11.2005, 13:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 803
Регистрация: 18.5.2005

Репутация: 1
Всего: 2



Спасибо большое за пояснения- буду разбираться
PM   Вверх
Berliner
Дата 2.12.2005, 14:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 803
Регистрация: 18.5.2005

Репутация: 1
Всего: 2



Код

 HttpURLConnection urlConnect = (HttpURLConnection)url.openConnection();


подскажите а как еще можно прописать строку коннекта только так?
пітался сделать

HttpURLConnection urlConnect=new HttpURLConnection(єкземпляр класса Http адреса);

urlConnect.openConnection;

неработает как надо пояснитте пожалуста ,если можно!

Это сообщение отредактировал(а) Berliner - 2.12.2005, 14:47
PM   Вверх
Страницы: (2) [Все] 1 2 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   tux
javastic
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux, javastic.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0780 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.