Слияние кода завершено, страница обновится автоматически
Spider — это простой и высокопроизводительный Java-фреймворк для создания пауков.
Ниже приведён пример кода для получения изображений с сайта jandan.net:
public class Sample {
public static void main(String[] args) {
// Инициализация spider
Spider spider = new Spider();
com.alisonyu.spider.setInitUrl(getInitUri()) // Установка начального URL
.setRouter(getRouter()) // Настройка маршрутизатора
.start(); // Запуск паука
}
// Настройка маршрутизатора
private static Router getRouter() {
Router router = new Router();
// route() создаёт маршрут и добавляет его в маршрутизатор
// Можно использовать regex(), filter() и contentFilter() для гибкой проверки URL
// handler — функция обработки после загрузки веб-страницы, в которой можно сохранить содержимое или получить новые ссылки для дальнейшего сканирования
router.route().filter(url -> url.contains("#comments")).handler(Sample::handleOOXX);
// setDefaultHandler используется для установки функции обработки, если ни один маршрут не соответствует запросу
router.setDefaultHandler(context -> {
System.out.println(context.getRequest().getUrl() + " не имеет соответствующего маршрута обработки");
});
return router;
}
// Установка начальных URL, здесь мы используем jandan.net в качестве примера
private static List<String> getInitUri() {
List<String> list = new ArrayList<>();
String url = "http://jandan.net/ooxx/page-";
for (int i = 1; i < 2; i++) {
list.add(url + i + "#comments");
}
return list;
}
// Функция обработки для URL с #comments
private static void handleOOXX(Context context) {
// Использование контекста для получения содержимого в формате JSON, HTML или byte[]
String html = context.getResponse().getHtml();
// Мы не ограничиваем метод анализа содержимого, в этом примере мы используем Jsoup для анализа HTML
Document parsedHtml = Jsoup.parse(html);
// Анализ для получения ссылок для дальнейшего сканирования
Elements pages = parsedHtml.select(".cp-pagenavi a");
for (String link : pages.eachAttr("href")) {
// inUrlSet() используется для предотвращения дублирования, addUrl() добавляет URL в очередь сканирования
if (!context.inUrlSet(link)) {
context.addUrl("http:" + link);
}
}
// Получение ссылок на изображения
Elements imgs = parsedHtml.select("#comments img");
List<String> links = imgs.eachAttr("src");
for (String link : links) {
System.out.println("Скачано " + link);
String[] ss = link.split("/");
String fileName = ss[ss.length - 1];
// Сохранение изображений асинхронно, класс Persistence предоставляет асинхронные функции сохранения файлов
Persistence.download("http:" + link, "storage/" + fileName, () -> {
System.out.println(fileName + " сохранено успешно");
});
}
// Рекомендуется избегать длительных операций в этой функции, таких как операции ввода-вывода
// Задачи, требующие времени, могут быть добавлены в функцию addWorkerTask()
context.addWorkerTask(() -> {
// Некоторые длительные операции
});
}
}
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Опубликовать ( 0 )