Переработан cockroach2.
Cockroach[小强] — не знаю, почему выбрал такое название, оно длинное и трудно запоминается, что привело к потере времени из-за проблем с написанием слов в процессе кодирования.
Этот проект можно считать ещё одной моей «ямой», их у меня много, ещё один не сильно изменит ситуацию.
Это небольшой, гибкий и надёжный фреймворк для краулеров, пока что назовём его фреймворком.
Он настолько прост, что несколько строк кода могут создать краулер.
<dependency>
<groupId>com.github.zhangyingwei</groupId>
<artifactId>cockroach-core</artifactId>
<version>1.0.6-Beta</version>
</dependency>
<!-- https://mvnrepository.com/artifact/com.github.zhangyingwei/cockroach-annotation -->
<dependency>
<groupId>com.github.zhangyingwei</groupId>
<artifactId>cockroach-annotation</artifactId>
<version>1.0.6-Beta</version>
</dependency>
@EnableAutoConfiguration
public class CockroachApplicationTest {
public static void main(String[] args) throws Exception {
TaskQueue queue = TaskQueue.of();
queue.push(new Task("http://blog.zhangyingwei.com"));
CockroachApplication.run(CockroachApplicationTest.class,queue);
}
}
Правильно, это так просто. Этот краулер получает содержимое страницы http://blog.zhangyingwei.com
и выводит результат.
Что касается обработки результатов краулера, программа по умолчанию использует класс PringStore для вывода всех результатов.
В качестве основных языков JVM здесь представлены scala и kotlin, которые хорошо взаимодействуют с java, но здесь приведены несколько примеров.
/**
* Created by zhangyw on 2017/12/25.
*/
class TTTStore extends IStore{
override def store(taskResponse: TaskResponse): Unit = {
println("ttt store")
}
}
object TTTStore{}
/**
* Created by zhangyw on 2017/12/25.
*/
@EnableAutoConfiguration
@ThreadConfig(num = 1)
@Store(classOf[TTTStore])
object MainApplication {
def main(args: Array[String]): Unit = {
println("hello scala spider")
val queue = TaskQueue.of()
queue.push(new Task("http://blog.zhangyingwei.com"))
CockroachApplication.run(MainApplication.getClass(),queue)
}
}
class TTTStore :IStore{
override fun store(response: TaskResponse) {
print("ttt store")
}
}
/**
* Created by zhangyw on 2017/12/25.
*/
@EnableAutoConfiguration
@ThreadConfig(num = 1)
@Store(TTTStore::class)
object MainApplication {
@JvmStatic
fun main(args: Array<String>) {
print("hello kotlin spider")
val queue = TaskQueue.of()
queue.push(Task("http://blog.zhangyingwei.com"))
CockroachApplication.run(MainApplication::class.java, queue)
}
}
Лицензия Apache 2.0 (см. LICENSE)
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Опубликовать ( 0 )