Веб-скребок с Java


Я не могу найти хороший веб-скребок на основе Java API. Сайт, который мне нужно очистить, также не предоставляет никакого API; я хочу перебирать все веб-страницы, используя некоторый pageID и извлекать заголовки HTML / другие вещи в своих деревьях DOM.

есть ли другие способы, кроме веб-выскабливания?

спасибо

9 65

9 ответов:

jsoup

извлечение заголовка не сложно, и у вас есть много вариантов, поищите здесь на переполнение стека для "Java HTML parsers". Один из них -Jsoup.

вы можете перемещаться по странице с помощью DOM если вы знаете структуру страницы, см. http://jsoup.org/cookbook/extracting-data/dom-navigation

это хорошая библиотека, и я использовал ее в своих последних проектах.

лучше всего использовать веб-драйвер Selenium, так как он

  1. обеспечивает визуальную обратную связь с кодером (см. ваше выскабливание в действии, см., Где оно останавливается)
  2. точный и последовательный, поскольку он непосредственно управляет браузером, который вы используете.
  3. медленно. Не попадает на веб-страницы, как HtmlUnit делает, но иногда вы не хотите, чтобы ударить слишком быстро.

    Htmlunit быстро, но ужасно справляется с Javascript и AJAX.

HTMLUnit может быть использован для выполнения веб-выскабливания, он поддерживает вызов страниц, заполнение и отправку форм. Я использовал это в своем проекте. Это хорошая библиотека Java для веб-выскабливание. читайте здесь больше

mechanize для Java было бы хорошо подходит для этого, и, как сказал Ваджи Эссам, он использует JSoup для HMLT. mechanize-это поэтапный HTTP / HTML-клиент, который поддерживает навигацию, отправку форм и очистку страниц.

http://gistlabs.com/software/mechanize-for-java/ (и GitHub здесь https://github.com/GistLabs/mechanize)

есть также Jaunt Java Web Scraping & JSON Querying -http://jaunt-api.com

посмотрите на парсер HTML, такой как TagSoup, HTMLCleaner или NekoHTML.

используя веб-скребок, вы можете извлечь полезный контент из веб-страницы и конвертировать в любой формат, если это применимо.

WebScrap ws= new WebScrap();
//set your extracted website url
ws.setUrl("http://dasnicdev.github.io/webscrap4j/");
//start scrap session
ws.startWebScrap();

теперь ваш веб-слом сессии начать и готовы к утилизации или извлечения данных в java с помощью библиотека webscrap4j.

Название :

System.out.println("-------------------Title-----------------------------");
System.out.println(ws.getSingleHTMLTagData("title"));

Для Слоган :

System.out.println("-------------------Tagline-----------------------------");
System.out.println(ws.getSingleHTMLScriptData("<h2 id='project_tagline'>", "</h2>"));

для всех тегов привязки :

System.out.println("-------------------All anchor tag-----------------------------");
   al=ws.getImageTagData("a", "href");
   for(String adata: al)
   {
    System.out.println(adata);
   }

для данных изображения:

System.out.println("-------------------Image data-----------------------------");
   System.out.println(ws.getImageTagData("img", "src"));
   System.out.println(ws.getImageTagData("img", "alt"));

Для Данных Ul-Li:

System.out.println("-------------------Ul-Li Data-----------------------------");
   al=ws.getSingleHTMLScriptData("<ul>", "</ul>","<li>","</li>");
   for(String str:al)
   {
    System.out.println(str);
   }

для полного исходного кода проверьте это учебник.

вы можете посмотреть в jwht-scrapper!

Это полный слом рамки, которая имеет все функции разработчик может ожидать от веб-скраппера:

Он работает с (jwht-htmltopojo)[https://github.com/whimtrip/jwht-htmltopojo) lib, который itsef использует Jsoup, упомянутый несколькими другими людьми здесь.

вместе они помогут вам построить удивительные скрапперы, отображающие непосредственно HTML в POJOs и обходящие любые классические проблемы с утилизацией всего за несколько минут!

надеюсь, что это может помочь некоторым людям здесь!

отказ от ответственности, я тот, кто разработал его, не стесняйтесь дайте мне знать ваши замечания!

Если вы хотите автоматизировать выскабливание большого количества страниц или данных, тогда вы можете попробовать Gotz ETL.

Он полностью управляется моделью, как настоящий инструмент ETL. Структура данных, рабочий процесс задачи и страницы для очистки определяются с помощью набора файлов определения XML, и кодирование не требуется. Запрос может быть написан либо с помощью селекторов с JSoup или XPath с HtmlUnit.