Соскоб с помощью Java - PullRequest
       28

Соскоб с помощью Java

70 голосов
/ 08 июля 2010

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

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

Ответы [ 9 ]

90 голосов
/ 08 июля 2010

jsoup

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

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

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

20 голосов
/ 23 сентября 2010

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

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

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

13 голосов
/ 21 июля 2011

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

4 голосов
/ 19 сентября 2017

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

4 голосов
/ 18 сентября 2012

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

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

2 голосов
/ 10 августа 2018

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

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

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

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

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

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

2 голосов
/ 08 июля 2010

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

1 голос
/ 23 января 2018

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

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

1 голос
/ 02 июня 2015

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

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

Полный исходный код см. В этом руководстве .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...