Blog Hunter /'hʌntɚ/
: Блог-охотник, инструмент для сбора данных с блогов на основе webMagic
Блог-охотник, инструмент для сбора данных с блогов на основе 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 и другие основные блоговые платформы
Сбор одной статьи: Указав только одну ссылку на статью, можно автоматически собрать её содержимое
Сбор списка статей: С помощью простого конфигурирования можно быстро собрать список статей
Управляемость: Можно выбрать остановку программы по количеству собранных ссылок или времени выполнения программы
Выходные данные в виде потока символов: Можно использовать вместе с фронтендом для реализации функции реального времени вывода логов программы
Многопоточность: Поддерживает многопоточное выполнение## Быстрое использование
<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
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 добавь в группу
) | Подписывайтесь на нашу публичную страницу |
| :------------: | :------------: |
| |
|
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Комментарии ( 0 )