Страницы

Поиск по вопросам

четверг, 15 ноября 2018 г.

Парсинг всего сайта с помощью Jsoup

Осваиваю парсинг сайтов, в связи с чем возник вопрос, на который никак не могу найти ответ.
Задача стоит следующая: прошерстить все страницы сайта, и посчитать, сколько раз там встречается заданное слово. На данный момент я разобрался, как сделать вышесказанное только на одной странице. Как можно организовать автоматический переход со страницы на страницу, чтобы пропарсить полностью весь сайт?


Ответ

Задачу можно разбить на несколько этапов:
Получаем содержимое страницы и выполняем нужный анализ.
Document doc = Jsoup.connect("http://www.site.com/").get(); processDoc(doc); Находим на текущей странице все ссылки с этим же доменом и добавляем их в очередь, предварительно отфильтровав те ссылки, которые уже были посещены.
Elements links = doc.select("a[href]"); for (Element link : links) { String absLink = link.attr("abs:href"); if (absLink.contains("site.com") && notYetVisited(absLink)) addToQueue(absLink); } Пока очередь еще не пуста, извлекаем очередную ссылку и переходим шагу 1.
Если сайт большой, то необходимо предусмотреть хранение очереди ссылок и списка посещенных ссылок в базе данных. Вот подробный пример с решением похожей задачи.

Комментариев нет:

Отправить комментарий