2012-07-01 4 views
11

Я хотел создать веб-искатель на основе Java для эксперимента. Я слышал, что создание веб-сканера в Java было способом, если это ваш первый раз. Однако у меня есть два важных вопроса.Библиотеки Java Web Crawler

  1. Как моя программа «посещает» или «соединяется» с веб-страницами? Пожалуйста, дайте краткое объяснение. (Я понимаю основы слоев абстракции от аппаратного обеспечения до программного обеспечения, здесь меня интересуют абстракции Java)

  2. Какие библиотеки я должен использовать? Я бы предположил, что мне нужна библиотека для подключения к веб-страницам, библиотека для протокола HTTP/HTTPS и библиотека для разбора HTML.

ответ

7

Это как ваша программа «посещает» или «соединяется» с веб-страницами.

URL url; 
    InputStream is = null; 
    DataInputStream dis; 
    String line; 

    try { 
     url = new URL("http://stackoverflow.com/"); 
     is = url.openStream(); // throws an IOException 
     dis = new DataInputStream(new BufferedInputStream(is)); 

     while ((line = dis.readLine()) != null) { 
      System.out.println(line); 
     } 
    } catch (MalformedURLException mue) { 
     mue.printStackTrace(); 
    } catch (IOException ioe) { 
     ioe.printStackTrace(); 
    } finally { 
     try { 
      is.close(); 
     } catch (IOException ioe) { 
      // nothing to see here 
     } 
    } 

Это будет скачать источник html-страницы.

Для HTML разборе см this

Также посмотрите на jSpider и jsoup

+0

Таким образом, делает это вытащить информацию из страницы, или просто перейти на страницу? Я пытаюсь написать искатель, который будет принимать пользовательский ввод, перейти на maps.google.com, подключить адрес и взять время маршрута и длину маршрута и вернуть его обратно в программу. Это возможно? – Ungeheuer

+0

@Adrian посмотрите на google maps api: https://developers.google.com/maps/documentation/distance-matrix/start –

0

Вы можете explore.apache дроида или апачский Nutch, чтобы получить ощущение Java на базе гусеничного

7

Crawler4j является лучшим решением для вас,

Crawler4j является открытым исходным кодом Java-обходчик, который обеспечивает простой интерфейс для сканирование в Интернете. Вы можете настроить многопоточный веб-искатель за 5 минут!

Также visit. для получения более подробной информации об инструментах для веб-поиска java и кратких объяснений для каждого.

0

Хотя HttpUnit в основном используется для веб-приложений Unit Testing, он перемещает веб-сайт, нажимает ссылки, анализирует таблицы и элементы формы и дает вам метаданные обо всех страницах. Я использую его для веб-сканирования, а не только для модульного тестирования. - http://httpunit.sourceforge.net/

2

Я бы предпочел crawler4j. Crawler4j - это искатель Java с открытым исходным кодом, который предоставляет простой интерфейс для сканирования в Интернете. Вы можете настроить многопоточный веб-искатель за несколько часов.

5

В настоящее время имеется множество парсеров HTML на основе Java, которые поддерживают просмотр и анализ страниц HTML.

Here's Комплексы te из анализатора HTML с базовым сопоставлением.

+1

@ Jean-FrançoisCorbett: Я уточнил свой ответ сейчас. – Vishnu

0

Я думаю, что jsoup лучше других, jsoup работает на Java 1.5 и выше, Scala, Android, OSGi и Google App Engine.