Подтвердить что ты не робот

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

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

Существуют ли другие способы, кроме очистки веб-страниц?

4b9b3361

Ответ 1

jsoup

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

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

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

Ответ 2

Лучше всего использовать Selenium Web Driver, поскольку он

  • Обеспечивает визуальную обратную связь с кодером (см. ваши выскабливания в действии, см., где он останавливается).
  • Точный и последовательный, поскольку он напрямую управляет используемым вами браузером.
  • Slow. Не попадает на веб-страницы, такие как HtmlUnit, но иногда вы не хотите слишком быстро нажимать.

    Htmlunit быстрый, но ужасен при обработке Javascript и AJAX.

Ответ 3

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

Ответ 4

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

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

Ответ 5

Существует также Jaunt Java Web Scraping и JSON Querying - http://jaunt-api.com

Ответ 6

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

Ответ 7

Вы можете попробовать ui4j или cdp4j библиотека для веб-соскабливания. ui4j требует Java 8 и использует браузер JavaFx WebKit, а для cdp4j требуется Chrome.

Ответ 8

Вы можете заглянуть в jwht-scrapper !

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

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

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

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

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

Ответ 9

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

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

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

Для заголовка:

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

Для Tagline:

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);
   }

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

Ответ 10

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

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

Ответ 11

Существует множество доступных сканеров с открытым исходным кодом на основе Java и python, которые вы можете настроить в соответствии со своими требованиями, некоторые из которых описаны ниже.

Apache Nutch
StormCrawler
Jsoup
Jaunt

в вашем случае, так как вам нужна единственная цена на странице продукта, вы можете создать свою собственную, используя JSoup, фреймворк, доступный в Java, или модуль Beautiful Soup в Python.

если масштаб не имеет значения, и вы просто хотите сканировать несколько страниц ежедневно, я рекомендую создать свой собственный сканер. в противном случае вы можете использовать Nutch или StormCrawler

Также для индивидуального заказа, пожалуйста, не используйте несколько селекторов для разных веб-страниц, на самом деле просто найдите общий тег, CSS или шаблон, который даст вам цену.