Осваиваю парсинг сайтов, в связи с чем возник вопрос, на который никак не могу найти ответ.
Задача стоит следующая: прошерстить все страницы сайта, и посчитать, сколько раз там встречается заданное слово. На данный момент я разобрался, как сделать вышесказанное только на одной странице. Как можно организовать автоматический переход со страницы на страницу, чтобы пропарсить полностью весь сайт?
Ответ
Задачу можно разбить на несколько этапов:
Получаем содержимое страницы и выполняем нужный анализ.
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.
Если сайт большой, то необходимо предусмотреть хранение очереди ссылок и списка посещенных ссылок в базе данных. Вот подробный пример с решением похожей задачи.
Комментариев нет:
Отправить комментарий