1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/hzchendou-blog-hunter

Клонировать/Скачать
README.md 51 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
Отправлено 28.04.2025 09:10 25e59dd

Blog Hunter /'hʌntɚ/: Блог-охотник, инструмент для сбора данных с блогов на основе webMagic

Maven Central License JDK


Блог-охотник, инструмент для сбора данных с блогов на основе webMagic, поддерживает такие платформы, как慕课、csdn、iteye、cnblogs、掘金和V2EX等各大主流博客平台。Блогов миллионы, а правила всего одно. Если соблюдать их не будешь, то слезы у родных будут.

Основные функции- Множество платформ: Проект включает в себя такие платформы, как慕课、csdn、iteye、cnblogs、掘金、V2EX、oschina и другие основные блоговые платформы

  • Сбор одной статьи: Указав только одну ссылку на статью, можно автоматически собрать её содержимое

  • Сбор списка статей: С помощью простого конфигурирования можно быстро собрать список статей

  • Управляемость: Можно выбрать остановку программы по количеству собранных ссылок или времени выполнения программы

  • Выходные данные в виде потока символов: Можно использовать вместе с фронтендом для реализации функции реального времени вывода логов программы

  • Многопоточность: Поддерживает многопоточное выполнение, что повышает эффективность

  • Множество платформ: Проект включает в себя такие платформы, как慕课、csdn、iteye、cnblogs、掘金、V2EX、oschina и другие основные блоговые платформы

  • Сбор одной статьи: Указав только одну ссылку на статью, можно автоматически собрать её содержимое

  • Сбор списка статей: С помощью простого конфигурирования можно быстро собрать список статей

  • Управляемость: Можно выбрать остановку программы по количеству собранных ссылок или времени выполнения программы

  • Выходные данные в виде потока символов: Можно использовать вместе с фронтендом для реализации функции реального времени вывода логов программы

  • Многопоточность: Поддерживает многопоточное выполнение, что повышает эффективность

  • Множество платформ: Проект включает в себя такие платформы, как慕课、csdn、iteye、cnblogs、掘金、V2EX、oschina и другие основные блоговые платформы

  • Сбор одной статьи: Указав только одну ссылку на статью, можно автоматически собрать её содержимое

  • Сбор списка статей: С помощью простого конфигурирования можно быстро собрать список статей

  • Управляемость: Можно выбрать остановку программы по количеству собранных ссылок или времени выполнения программы

  • Выходные данные в виде потока символов: Можно использовать вместе с фронтендом для реализации функции реального времени вывода логов программы

  • Многопоточность: Поддерживает многопоточное выполнение, что повышает эффективность

  • Множество платформ: Проект включает в себя такие платформы, как慕课、csdn、iteye、cnblogs、掘金、V2EX、oschina и другие основные блоговые платформы

  • Сбор одной статьи: Указав только одну ссылку на статью, можно автоматически собрать её содержимое

  • Сбор списка статей: С помощью простого конфигурирования можно быстро собрать список статей

  • Управляемость: Можно выбрать остановку программы по количеству собранных ссылок или времени выполнения программы

  • Выходные данные в виде потока символов: Можно использовать вместе с фронтендом для реализации функции реального времени вывода логов программы

  • Многопоточность: Поддерживает многопоточное выполнение, что повышает эффективность

  • Множество платформ: Проект включает в себя такие платформы, как慕课、csdn、iteye、cnblogs、掘金、V2EX、oschina и другие основные блоговые платформы

  • Сбор одной статьи: Указав только одну ссылку на статью, можно автоматически собрать её содержимое

  • Сбор списка статей: С помощью простого конфигурирования можно быстро собрать список статей

  • Управляемость: Можно выбрать остановку программы по количеству собранных ссылок или времени выполнения программы

  • Выходные данные в виде потока символов: Можно использовать вместе с фронтендом для реализации функции реального времени вывода логов программы

  • Многопоточность: Поддерживает многопоточное выполнение, что повышает эффективность

  • Множество платформ: Проект включает в себя такие платформы, как慕课、csdn、iteye、cnblogs、掘金、V2EX、oschina и другие основные блоговые платформы

  • Сбор одной статьи: Указав только одну ссылку на статью, можно автоматически собрать её содержимое

  • Сбор списка статей: С помощью простого конфигурирования можно быстро собрать список статей

  • Управляемость: Можно выбрать остановку программы по количеству собранных ссылок или времени выполнения программы

  • Выходные данные в виде потока символов: Можно использовать вместе с фронтендом для реализации функции реального времени вывода логов программы

  • Многопоточность: Поддерживает многопоточное выполнение, что повышает эффективность

  • Множество платформ: Проект включает в себя такие платформы, как慕课、csdn、iteye、cnblogs、掘金、V2EX、oschina и другие основные блоговые платформы

  • Сбор одной статьи: Указав только одну ссылку на статью, можно автоматически собрать её содержимое

  • Сбор списка статей: С помощью простого конфигурирования можно быстро собрать список статей

  • Управляемость: Можно выбрать остановку программы по количеству собранных ссылок или времени выполнения программы

  • Выходные данные в виде потока символов: Можно использовать вместе с фронтендом для реализации функции реального времени вывода логов программы

  • Многопоточность: Поддерживает многопоточное выполнение, что повышает эффективность

  • Множество платформ: Проект включает в себя такие платформы, как慕课、csdn、iteye、cnblogs、掘金、V2EX、oschina и другие основные блоговые платформы

  • Сбор одной статьи: Указав только одну ссылку на статью, можно автоматически собрать её содержимое

  • Сбор списка статей: С помощью простого конфигурирования можно быстро собрать список статей

  • Управляемость: Можно выбрать остановку программы по количеству собранных ссылок или времени выполнения программы

  • Выходные данные в виде потока символов: Можно использовать вместе с фронтендом для реализации функции реального времени вывода логов программы

  • Многопоточность: Поддерживает многопоточное выполнение, что повышает эффективность

  • Множество платформ: Проект включает в себя такие платформы, как慕课、csdn、iteye、cnblogs、掘金、V2EX、oschina и другие основные блоговые платформы

  • Сбор одной статьи: Указав только одну ссылку на статью, можно автоматически собрать её содержимое

  • Сбор списка статей: С помощью простого конфигурирования можно быстро собрать список статей

  • Управляемость: Можно выбрать остановку программы по количеству собранных ссылок или времени выполнения программы

  • Выходные данные в виде потока символов: Можно использовать вместе с фронтендом для реализации функции реального времени вывода логов программы

  • Многопоточность: Поддерживает многопоточное выполнение, что повышает эффективность

  • Множество платформ: Проект включает в себя такие платформы, как慕课、csdn、iteye、cnblogs、掘金、V2EX、oschina и другие основные блоговые платформы

  • Сбор одной статьи: Указав только одну ссылку на статью, можно автоматически собрать её содержимое

  • Сбор списка статей: С помощью простого конфигурирования можно быстро собрать список статей

  • Управляемость: Можно выбрать остановку программы по количеству собранных ссылок или времени выполнения программы

  • Выходные данные в виде потока символов: Можно использовать вместе с фронтендом для реализации функции реального времени вывода логов программы

  • Многопоточность: Поддерживает многопоточное выполнение, что повышает эффективность

  • Множество платформ: Проект включает в себя такие платформы, как慕课、csdn、iteye、cnblogs、掘金、V2EX、oschina и другие основные блоговые платформы

  • Сбор одной статьи: Указав только одну ссылку на статью, можно автоматически собрать её содержимое

  • Сбор списка статей: С помощью простого конфигурирования можно быстро собрать список статей

  • Управляемость: Можно выбрать остановку программы по количеству собранных ссылок или времени выполнения программы

  • Выходные данные в виде потока символов: Можно использовать вместе с фронтендом для реализации функции реального времени вывода логов программы

  • Многопоточность: Поддерживает многопоточное выполнение, что повышает эффективность

  • Множество платформ: Проект включает в себя такие платформы, как慕课、csdn、iteye、cnblogs、掘金、V2EX、oschina и другие основные блоговые платформы

  • Сбор одной статьи: Указав только одну ссылку на статью, можно автоматически собрать её содержимое

  • Сбор списка статей: С помощью простого конфигурирования можно быстро собрать список статей

  • Управляемость: Можно выбрать остановку программы по количеству собранных ссылок или времени выполнения программы

  • Выходные данные в виде потока символов: Можно использовать вместе с фронтендом для реализации функции реального времени вывода логов программы

  • Многопоточность: Поддерживает многопоточное выполнение## Быстрое использование

Добавление зависимости

<dependency>
    <groupId>me.zhyd.hunter</groupId>
    <artifactId>blog-hunter</artifactId>
    <version>1.0.4</version>
</dependency>

Сбор одной статьи

String url = "https://www.cnblogs.com/zhangyadong/p/oneblog.html";
boolean convertImage = true;
HunterProcessor hunter = new BlogHunterProcessor(url, convertImage);
CopyOnWriteArrayList<VirtualArticle> list = hunter.execute();
  • url фактический адрес статьи для сбора
  • convertImage конвертировать ли изображения, если выбрано значение true, то в результате будут возвращены все ссылки на изображения в статье

Возвращение результатов

[{
	"author": "HandsomeBoy丶",
	"content": "xx",
	"description": "xx",
	"imageLinks": [{
		"originalLink": "https://images2018.cnblogs.com/blog/631092/201809/631092-20180911093741389-1090581462.png",
		"srcLink": "https://images2018.cnblogs.com/blog/631092/201809/631092-20180911093741389-1090581462.png"
	}, {
		"originalLink": "https://img.shields.io/badge/MySQL-5.6.4-green.svg",
		"srcLink": "https://img.shields.io/badge/MySQL-5.6.4-green.svg"
	}],
	"releaseDate": 1536630780000,
	"source": "https://www.cnblogs.com/zhangyadong/p/oneblog.html",
	"tags": ["другое"],
	"title": "Рекомендую одну самописную Java-версию открытого блога OneBlog"
}]

imageLink содержит два свойства: originalLink, srcLink. Свойство srcLink представляет собой значение атрибута src целевого сайта, в то время как originalLink указывает на реальный путь к изображению. Такое обработывание используется из-за того, что некоторые сайты используют технику ленивой загрузки изображений, в результате чего атрибут src не содержит реального пути к изображению.#### Извлечение списка статей (извлекаются только две статьи)

HunterConfig config = HunterConfigContext.getHunterConfig(Platform.IMOOC);
config.setUid("1175248")
        .setExitWay(ExitWayEnum.URL_COUNT)
        .setCount(2);
HunterProcessor hunter = new BlogHunterProcessor(config);
CopyOnWriteArrayList<VirtualArticle> list = hunter.execute();

Результат выполнения

16:52:27,098  INFO HunterPrintWriter:38 - [ hunter ]  <a href="https://www.imooc.com/article/259921" target="_blank">springboot之一文带你搞懂Scheduler定时器(修订-详尽版)</a> -- Му Дунснё -- 2018-11-08 17:31:00
16:52:28,543  INFO HunterPrintWriter:38 - [ hunter ]  <a href="https://www.imooc.com/article/259252" target="_blank">springboot整合Mybatis+Mapper+Pagehelper(修订-详尽版)</a> -- Му Дунснё -- 2018-11-05 21:02:00

Извлечение списка статей (программа выполняется 10 секунд)```java

HunterConfig config = HunterConfigContext.getHunterConfig(Platform.CSDN); config.setUid("u011197448") .setExitWay(ExitWayEnum.DURATION) .setCount(10); HunterProcessor hunter = new BlogHunterProcessor(config); System.out.println("Программа начала выполнение: " + new Date()); CopyOnWriteArrayList list = hunter.execute(); System.out.println("Программа завершила выполнение: " + new Date());

**Результат выполнения**

Программа начала выполнение: Пн Мар 04 16:56:56 CST 2019 16:56:59,274 INFO HunterPrintWriter:38 - [hunter] Spring Boot интеграция с шаблонами Freemarker (детальный вариант) -- Семицветный волк -- 2018-11-09 17:45:56 16:57:00,634 INFO HunterPrintWriter:38 - [hunter] DBlog открытый блог добавил функцию миграции блогов (поддерживает несколько сайтов) -- Семицветный волк -- 2018-08-24 17:16:24 16:57:01,862 INFO HunterPrintWriter:38 - [hunter] 【Отлично】Рекомендую несколько отличных инструментов для разработки -- Семицветный волк -- 2018-07-27 10:40:31 16:57:03,080 INFO HunterPrintWriter:38 - [hunter] Слухи о том, что Microsoft планирует приобрести GitHub, оцениваются более чем в 5 миллиардов долларов -- Семицветный волк -- 2018-06-04 10:11:12 16:57:04,356 INFO HunterPrintWriter:38 - [hunter] Использование пользовательских аннотаций в проекте Spring Boot + Freemarker -- Семицветный волк -- 2018-03-08 15:04:50 16:57:05,638 INFO HunterPrintWriter:38 - [hunter] Использование пользовательских аннотаций в проекте Spring Boot + Freemarker -- Семицветный волк -- 2018-03-08 15:04:50

 16:57:06,879  INFO HunterPrintWriter:38 - [ hunter ]  <a href="https://blog. csdn. net/u011197448/article/details/79142428" target="_blank">JS异常(intermediate value)(intermediate value)(...) is not a function</a> -- Семицветный волк -- 2018-01-23 17:30:15
 Программа завершила выполнение: Пн Мар 04 16:57:07 CST 2019
 ```#### Продвинутое использование```java
 HunterConfig config = HunterConfigContext.getHunterConfig(Platform.IMOOC);
 // set сбрасывает, add добавляет
 config.setEntryUrls("https://www.imooc.com/u/1175248/articles")
         .addEntryUrl("https://www.imooc.com/u/4321686/articles")
         // Устанавливает способ завершения программы
         .setExitWay(ExitWayEnum.URL_COUNT)
         // Устанавливает количество элементов для извлечения за 120 секунд, если все статьи уже были извлечены, программа завершит работу раньше
         .setCount(20)
         // Время ожидания между извлечениями
         .setSleepTime(100)
         // Количество попыток повторного выполнения при неудаче
         .setRetryTimes(3)
         // Количество циклов повторного выполнения для неудачных ссылок
         .setCycleRetryTimes(3)
         // Количество запускаемых потоков
         .setThreadCount(5)
         // Включение конвертации изображений
         .setConvertImg(true);
 HunterProcessor hunter = new BlogHunterProcessor(config);
 CopyOnWriteArrayList<VirtualArticle> list = hunter.execute();
 ```**Результат выполнения**```
 16:58:44,510 INFO HunterPrintWriter:38 - [hunter] <a href="https://www.imooc.com/article/280679" target="_blank">【硬核优惠】三月涨薪季,过关斩将,“职”由你!</a> -- 慕课网官方_运营中心 -- 2019-03-01 11:58:00
 16:58:44,512 INFO HunterPrintWriter:38 - [hunter] <a href="https://www.imooc.com/article/259252" target="_blank">springboot整合Mybatis+Mapper+Pagehelper(修订-详尽版)</a> -- 慕冬雪 -- 2018-11-05 21:02:00
 16:58:44,510 INFO HunterPrintWriter:38 - [hunter] <a href="https://www.imooc.com/article/280748" target="_blank">慕课网每周干货福利礼包(第二十棒)</a> -- 慕课网官方_运营中心 -- 2019-03-01 17:30:00
 16:58:44,544 INFO HunterPrintWriter:38 - [hunter] <a href="https://www.imooc.com/article/259921" target="_blank">springboot之一文带你搞懂Scheduler定时器(修订-详尽版)</a> -- 慕冬雪 -- 2018-11-08 17:31:00
 ```16:58:44,571 INFO HunterPrintWriter:38 - [hunter] <a href="https://www.imooc.com/article/258641" target="_blank">springboot整合Freemark模板(修订-详尽版)</a> -- Му Дунснег -- 2018-11-02 21:05:00
16:58:45,138 INFO HunterPrintWriter:38 - [hunter] <a href="https://www.imooc.com/article/280368" target="_blank">直播 | 价值99元的2019前端面试课,限时免费听! </a> -- Муке юе официальный_операционный центр -- 2019-02-27 11:45:00
16:58:45,140 INFO HunterPrintWriter:38 - [hunter] <a href="https://www.imooc.com/article/254337" target="_blank">一次糟心的排错历程</a> -- Му Дунснег -- 2018-10-15 11:47:00
16:58:45,142 INFO HunterPrintWriter:38 - [hunter] <a href="https://www.imooc.com/article/279570" target="_blank">慕课网每周干货福利礼包(第十九棒)</a> -- Муке юе официальный_операционный центр -- 2019-02-22 16:11:00
16:58:45,156 INFO HunterPrintWriter:38 - [hunter] <a href="https://www.imooc.com/article/279579" target="_blank">一文读懂慕课专栏,文末福利! </a> -- Муке юе официальный_операционный центр -- 2019-02-22 18:35:00
16:58:45,191 INFO HunterPrintWriter:38 - [hunter] <a href="https://www.imooc.com/article/250819" target="_blank">SpringBoot项目实战(10):自定义freemarker标签</a> -- Му Дунснег -- 2018-09-28 14:01:00
16:58:45,698 INFO HunterPrintWriter:38 - [hunter] <a href="https://www.imooc.com/com/article/279428" target="_blank">【Муке юе юе】бобо учитель: алгоритмы это игра,攻关打Boss(上)</a> -- Муке юе официальный_операционный центр -- 2019-02-21 13:54:00
16:58:45,707 INFO HunterPrintWriter:38 - [hunter] <a href="https://www.imooc.com/article/279293" target="_blank">【Интервью техники серия один】готовиться к золотому сезону, заранее повысить зарплату</a> -- Муке юе официальный_операционный центр -- 2019-02-20 15:54:00
16:58:45,727 INFO HunterPrintWriter:38 - [hunter] <a href="https://www.imooc.com/article/70886" target="_blank">DBlog открытое программное обеспечение блога добавило функцию миграции блога (поддерживает несколько сайтов)</a> -- Му Дунснег -- 2018-08-24 17:33:00
16:58:45,955 INFO HunterPrintWriter:38 - [hunter] <a href="https://www.imooc.com/article/com/article/78650" target="_blank">Подробное описание того, как самостоятельно разработать функцию "перемещения блога"</a> -- Му Дунснег -- 2018-09-13 13:25:00
  16:58:46,095  INFO HunterPrintWriter:38 - [ hunter ]  <a href="https://www.  imooc.  com/article/70439" target="_blank">echarts статистические графики таблица стран мира и методы китайской локализации</a> -- Му Дунснег -- 2018-08-22 13:58:00
  16:58:46,128  INFO HunterPrintWriter:38 - [ hunter ]  <a href="https://www.  imooc.  com/article/49002" target="_blank">【Обратите внимание】я хочу сказать прямо, я хочу научить вас извлекать статьи с Муке! </a> -- Му Дунснег -- 2018-07-31 18:33:00
  16:58:46,173  INFO HunterPrintWriter:38 - [ hunter ]  <a href="https://www.  imooc.  com/article/278482" target="_blank">Муке юе еженедельные подарки (18-я палка)</a> -- Муке юе официальный_операционный центр -- 2019-02-15 15:28:00
  16:58:46,258  INFO HunterPrintWriter:38 - [ hunter ]  <a href="https://www.  imooc.  com/article/277960" target="_blank">【Объявление о победе】012-й тур: программисты, ваша мама просит вас пойти на свидание/жениться/рожать? </a> -- Муке юе официальный_операционный центр -- 2019-02-12 11:26:00
  16:58:46,388  INFO HunterPrintWriter:38 - [ hunter ]  <a href="https://www.  imooc.  com/article/41600" target="_blank">DBlog построение сайта использование Websocket на практике</a> -- Му Дунснег -- 2018-07-05 14:50:00
  16:58:46,565  INFO HunterPrintWriter:38 - [ hunter ]  <a href="https://www.  imooc.  com/article/276553" target="_blank">Великие мастера собрались — анализ исходного кода реализации команд Redis</a> -- Муке юе официальный_операционный центр -- 2019-01-30 15:21:00
  ```#### Остановка паука```При создании Hunter задается `uuid`, в данном примере используется `id текущего пользователя` в качестве `uuid`.
```java
HunterProcessor hunter = new BlogHunterProcessor(config, writerUtil, userId);
CopyOnWriteArrayList<VirtualArticle> list = hunter.execute();

Остановка паука

Hunter паук = Hunter.getHunter(userId);
паук.stop();

Внимание

Некоторые сайты не имеют настроек Keywords, поэтому при выполнении юнит-тестов, если Keywords пустые, их можно игнорировать. Если же пустыми являются title, content и другие, проверьте правильность настроек xpath в конфигурационном файле.

Дополнительные способы использования см. в документации...

При создании Hunter задается uuid, в данном примере используется id текущего пользователя в качестве uuid.

HunterProcessor hunter = new BlogHunterProcessor(config, writerUtil, userId);
CopyOnWriteArrayList<VirtualArticle> list = hunter.execute();

Остановка паука

Hunter паук = Hunter.getHunter(userId);
паук.stop();

Внимание

Некоторые сайты не имеют настроек Keywords, поэтому при выполнении юнит-тестов, если Keywords пустые, их можно игнорировать. Если же пустыми являются title, content и другие, проверьте правильность настроек xpath в конфигурационном файле.

Дополнительные способы использования см. в документации...

При создании Hunter задается uuid, в данном примере используется id текущего пользователя в качестве uuid.

HunterProcessor hunter = new BlogHunterProcessor(config, writerUtil, userId);
CopyOnWriteArrayList<VirtualArticle> list = hunter.execute();

Остановка паука

Hunter паук = Hunter.getHunter(userId);
паук.stop();

Внимание

Некоторые сайты не имеют настроек Keywords, поэтому при выполнении юнит-тестов, если Keywords пустые, их можно игнорировать. Если же пустыми являются title, content и другие, проверьте правильность настроек xpath в конфигурационном файле.

Дополнительные способы использования см. в документации...

При создании Hunter задается uuid, в данном примере используется id текущего пользователя в качестве uuid.

HunterProcessor hunter = new BlogHunterProcessor(config, writerUtil, userId);
CopyOnWriteArrayList<VirtualArticle> list = hunter.execute();

Остановка паука

Hunter паук = Hunter.getHunter(userId);
паук.stop();

Внимание

Некоторые сайты не имеют настроек Keywords, поэтому при выполнении юнит-тестов, если Keywords пустые, их можно игнорировать. Если же пустыми являются title, content и другие, проверьте правильность настроек xpath в конфигурационном файле.

Дополнительные способы использования см. в документации...

При создании Hunter задается uuid, в данном примере используется id текущего пользователя в качестве uuid.

HunterProcessor hunter = new BlogHunterProcessor(config, writerUtil, userId);
CopyOnWriteArrayList<VirtualArticle> list = hunter.execute();

Остановка паука

Hunter паук = Hunter.getHunter(userId);
паук.stop();

Внимание

Некоторые сайты не имеют настроек Keywords, поэтому при выполнении юнит-тестов, если Keywords пустые, их можно игнорировать. Если же пустыми являются title, content и другие, проверьте правильность настроек xpath в конфигурационном файле.

Дополнительные способы использования см. в документации...

При создании Hunter задается uuid, в данном примере используется id текущего пользователя в качестве uuid.

HunterProcessor hunter = new BlogHunterProcessor(config, writerUtil, userId);
CopyOnWriteArrayList<VirtualArticle> list = hunter.execute();

Остановка паука

Hunter паук = Hunter.getHunter(userId);
паук.stop();

Внимание

Некоторые сайты не имеют настроек Keywords, поэтому при выполнении юнит-тестов, если Keywords пустые, их можно игнорировать. Если же пустыми являются title, content и другие, проверьте правильность настроек xpath в конфигурационном файле.

Дополнительные способы использования см. в документации...

При создании Hunter задается uuid, в данном примере используется id текущего пользователя в качестве uuid.

HunterProcessor hunter = new BlogHunterProcessor(config, writerUtil, userId);
CopyOnWriteArrayList<VirtualArticle> list = hunter.execute();

Остановка паука

Hunter паук = Hunter.getHunter(userId);
паук.stop();

Внимание

Некоторые сайты не имеют настроек Keywords, поэтому при выполнении юнит-тестов, если Keywords пустые, их можно игнорировать. Если же пустыми являются title, content и другие, проверьте правильность настроек xpath в конфигурационном файле.

Дополнительные способы использования см. в документации...

При создании Hunter задается uuid, в данном примере используется id текущего пользователя в качестве uuid.

HunterProcessor hunter = new BlogHunterProcessor(config, writerUtil, userId);
CopyOnWriteArrayList<VirtualArticle> list = hunter.execute();

Остановка паука

Hunter паук = Hunter.getHunter(userId);
паук.stop();

Внимание

Некоторые сайты не имеют настроек Keywords, поэтому при выполнении юнит-тестов, если Keywords пустые, их можно игнорировать. Если же пустыми являются title, content и другие, проверьте правильность настроек xpath в конфигурационном файле.

Дополнительные способы использования см. в документации...

При создании Hunter задается uuid, в данном примере используется id текущего пользователя в качестве uuid.

HunterProcessor hunter = new BlogHunterProcessor(config, writerUtil, userId);
CopyOnWriteArrayList<VirtualArticle> list = hunter.execute();

Остановка паука

Hunter паук = Hunter.getHunter(userId);
паук.stop();

Внимание

Некоторые сайты не имеют настроек Keywords, поэтому при выполнении юнит-тестов, если Keywords пустые, их можно игнорировать. Если же пустыми являются title, content и другие, проверьте правильность настроек xpath в конфигурационном файле.

Дополнительные способы использования см. в документации...

При создании Hunter задается uuid, в данном примере используется id текущего пользователя в качестве uuid.

HunterProcessor hunter = new BlogHunterProcessor(config, writerUtil, userId);
CopyOnWriteArrayList<VirtualArticle> list = hunter.execute();

Остановка паука

Hunter паук = Hunter.getHunter(userId);
паук.stop();

Внимание

Некоторые сайты не имеют настроек Keywords, поэтому при выполнении юнит-тестов, если Keywords пустые, их можно игнорировать. Если же пустыми являются title, content и другие, проверьте правильность настроек xpath в конфигурационном файле.

Дополнительные способы использования см. в документации...

При создании Hunter задается uuid, в данном примере используется id текущего пользователя в качестве uuid.

HunterProcessor hunter = new BlogHunterProcessor(config, writerUtil, userId);
CopyOnWriteArrayList<VirtualArticle> list = hunter.execute();

Остановка паука

Hunter паук = Hunter.getHunter(userId);
паук.stop();

Внимание

Некоторые сайты не имеют настроек Keywords, поэтому при выполнении юнит-тестов, если Keywords пустые, их можно игнорировать. Если же пустыми являются title, content и другие, проверьте правильность настроек xpath в конфигурационном файле.

Дополнительные способы использования см. в документации...

При создании Hunter задается uuid, в данном примере используется id текущего пользователя в качестве uuid.

HunterProcessor hunter = new BlogHunterProcessor(config, writerUtil, userId);
CopyOnWriteArrayList<VirtualArticle> list = hunter.execute();

Остановка паука

Hunter паук = Hunter.getHunter(userId);
паук.stop();

Внимание

Некоторые сайты не имеют настроек Keywords, поэтому при выполнении юнит-тестов, если Keywords пустые, их можно игнорировать. Если же пустыми являются title, content и другие, проверьте правильность настроек xpath в конфигурационном файле.

Дополнительные способы использования см. в документации...

При создании Hunter задается uuid, в данном примере используется id текущего пользователя в качестве uuid.

HunterProcessor hunter = new BlogHunterProcessor(config, writerUtil, userId);
CopyOnWriteArrayList<VirtualArticle> list = hunter.execute();

Остановка паука

Hunter паук = Hunter.getHunter(userId);
паук.stop();

Внимание

Некоторые сайты не имеют настроек Keywords, поэтому при выполнении юнит-тестов, если Keywords пустые, их можно игнорировать. Если же пустыми являются title, content и другие, проверьте правильность настроек xpath в конфигурационном файле.

Дополнительные способы использования см. в документации...

При создании Hunter задается uuid, в данном примере используется id текущего пользователя в качестве uuid.

HunterProcessor hunter = new BlogHunterProcessor(config, writerUtil, userId);
CopyOnWriteArrayList<VirtualArticle> list = hunter.execute();

Остановка паука

Hunter паук = Hunter.getHunter(userId);
паук.stop();

Внимание

Некоторые сайты не имеют настроек Keywords, поэтому при выполнении юнит-тестов, если Keywords п## Конфигурационная информация| Поле | Описание | Тип данных | Значение по умолчанию | Обязательное поле | Примечание | | :------------ | :------------: | :------------: | :------------: | :------------: | :------------ | | resolver | Поставщик парсера для каждого xxRegex, который позволяет указывать правила извлечения для отдельных свойств | string | - | x | - | | resolver. releaseDate | Поставщик парсера для releaseDate | Object | - | x | - | | resolver. releaseDate. type | Тип парсера, возможные значения: regex, xpath, по умолчанию xpath, и если type не равен regex, то берется xpath | string | xpath | x | - | | resolver. releaseDate. clazz | Тип класса поля, обычно числовые типы, например java. lang. Long, java. lang. Integer, java. lang. Float, java. lang. Double | string | - | x | - | | resolver. releaseDate. operator | Оператор, поддерживаются простые операции =-*/, если type=regex и clazz=числовой тип, то вычисления производятся по operator | string | - | x | - | | resolver. title | То же самое | Object | - | x | - | | resolver. content | То же самое | Object | - | x | - | | resolver. author | То же самое | Object | - | x | - | | resolver. targetLinks | То же самое | Object | - | x | - | | resolver. tag | То же самое | Object | - | x | - | | resolver. keywords | То же самое | Object | - | x | - | | resolver. description | То же самое | Object | - | x | - | | titleRegex | Правило соответствия для заголовка (xpath) | string | - | √ | - | | contentRegex | Правило соответствия для содержимого (xpath) | string | - | √ | - | | releaseDateRegex | Правило соответствия для даты публикации (xpath) | string | - | √ | - | | authorRegex | Правило соответствия для автора (xpath) | string | - | √ | - | | targetLinksRegex | Правило соответствия для URL для парсинга (regex) | string | - | √ | - || tagRegex | Правило соответствия для тегов (xpath) | string | - | × | - | | keywordsRegex | Правило соответствия для ключевых слов статьи (xpath) | string | //meta[@name='keywords']/@content | × | - | | descriptionRegex | Правило соответствия для описания статьи (xpath) | string | //meta[@name='description']/@content | × | - | | domain | Корневая доменная зона сайта | string | - | √ | - | | charset | Кодировка сайта | string | UTF-8 | × | - | | single | Парсинг одной статьи | bool | false | × | - | | sleepTime | Время ожидания между каждым захватом | int | 1000 | × | - | | retryTimes | Количество попыток повторного захвата при неудаче | int | 2 | × | - | | cycleRetryTimes | Количество циклических попыток повторного захвата | int | 2 | × | Если захват неудачен после всех попыток повторного захвата, будет выполнено циклическое повторное захвата | | threadCount | Количество потоков | int | 1 | × | - | | entryUrls | Входные URL-адреса для захвата | list | - | √ | - | | exitWay | Способ выхода из программы | string | URL_COUNT | × | DEFAULT: по умолчанию, программа завершается после захвата всех соответствующих URL-адресов
DURATION: по умолчанию, программа работает 60 секунд
URL_COUNT: по умолчанию, программа завершается после захвата 10 URL-адресов | | count | Количество, соответствующее способу выхода | int | - | × | По умолчанию 60, если exitWay = DURATION
По умолчанию 10, если exitWay = URL_COUNT | | cookies | Cookies сайта | list | - | × | Если на сайте требуется вход, можно указать этот параметр для обхода входа | | headers | Заголовки HTTP-запроса | map | - | × | Если на сайте есть защита от кражи ссылок, может потребоваться указать заголовки | | ua | User-agent HTTP-запроса | String | - | × | Случайно сгенерирован, не рекомендуется использовать user-agent мобильной версии, так как некоторые сайты автоматически переадресуют на мобильную или десктопную версию в зависимости от user-agent | | uid | Уникальный идентификатор пользователя на платформе блогов | String | - | × | Обычно это случайная строка символов в URL личного кабинета пользователя | | onlyThisAuthor | Захватывать только этого автора | bool | - | × | Зарезервированное поле, временно не используется | | ajaxRequest | Страница, отрендеренная с помощью AJAX | bool | - | × | Зарезервированное поле, временно не используется | | convertImg | Сохранять изображения | bool | - | × | Если выбрано значение true, будут автоматически отфильтрованы ссылки на изображения, и их можно будет скачать и заменить оригинальными изображениями | | proxyList | Список прокси | list | - | × | Зарезервированное поле, временно не используется | | proxyType | Тип прокси | enum | - | × | Зарезервированное поле, временно не используется |## Общение| WeChat (комментарий: hunter добавь в группу) | Подписывайтесь на нашу публичную страницу | | :------------: | :------------: | | | |

Благодарности

  • WebMagic: Простой и мощный фреймворк для парсинга данных
  • Hutool: Отличная библиотека для работы на Java
  • OneBlog: Настоящая звезда среди Java-открытых блогов
  • JustAuth: Маленький, но полный и красивый компонент для авторизации через третьи стороны. Поддерживает авторизацию через такие платформы, как Github, Gitee, Weibo, DingTalk, Baidu, Coding, Tencent Cloud Developer Platform, OSChina, Alipay, QQ, WeChat, Taobao, Google, Facebook, Douyin, LinkedIn, Xiaomi, Microsoft, Toutiao, Teambition, StackOverflow, Pinterest, Renren, Huawei, Enterprise WeChat, Kuajiale, Gitlab, Meituan, Ele.me и Twitter. Авторизация, так просто!

Опубликовать ( 0 )

Вы можете оставить комментарий после Вход в систему

1
https://api.gitlife.ru/oschina-mirror/hzchendou-blog-hunter.git
git@api.gitlife.ru:oschina-mirror/hzchendou-blog-hunter.git
oschina-mirror
hzchendou-blog-hunter
hzchendou-blog-hunter
master