English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Ejemplo de captura de noticias con la herramienta de rastreo Gecco en Java

Recientemente he visto la herramienta de rastreo de Gecoo, siento que es bastante simple y útil, por lo que escribo un DEMO para probar, capturar el sitio web
http://zj.zjol.com.cn/home.html,principalmente captura los títulos de las noticias y la hora de publicación como objetos de prueba de captura. La captura de nodos HTML se realiza mediante la selección de nodos de manera similar a los selectores de jQuery, lo que es muy conveniente. El código de Gecco principalmente utiliza anotaciones para implementar la coincidencia de URL, lo que parece más simple y atractivo.

Agregar dependencia de Maven

<dependency>
   <groupId>com.geccocrawler</<groupId>
   <artifactId>gecco</<artifactId>
   <version>1.0.8</version>
</dependency>

Escribir página de captura de lista

@Gecco(matchUrl = "http://zj.zjol.com.cn/home.html#63;pageIndex={pageIndex}&pageSize={pageSize}"pipelines = "zJNewsListPipelines")
public class ZJNewsGeccoList implements HtmlBean {
  @Request
  private HttpRequest request;
  @RequestParameter
  private int pageIndex;
  @RequestParameter
  private int pageSize;
  @HtmlField(cssPath = "#content > div > div > div.con_index > div.r.main_mod > div > ul > li > dl > dt > a")
  private List<HrefBean> newList;
}
@PipelineName("zJNewsListPipelines")
public class ZJNewsListPipelines implements Pipeline<ZJNewsGeccoList> {
  public void process(ZJNewsGeccoList zjNewsGeccoList) {
    HttpRequest request=zjNewsGeccoList.getRequest();
    for (HrefBean bean:zjNewsGeccoList.getNewList()){
      //Entrar a la página de detalles para capturar
    SchedulerContext.into(request.subRequest("http://zj.zjol.com.cn"+bean.getUrl()));
    }
    int page=zjNewsGeccoList.getPageIndex();+1;
    String nextUrl = "http://zj.zjol.com.cn/home.html#63;pageIndex="+page+"&pageSize=100";
    //Capturar la siguiente página
    SchedulerContext.into(request.subRequest(nextUrl));
  }
}

Escribir detalles de captura de página

@Gecco(matchUrl = "http://zj.zjol.com.cn/news/[code].html" ,pipelines = "zjNewsDetailPipeline")
public class ZJNewsDetail implements HtmlBean {
  @Text
  @HtmlField(cssPath = "#headline")
  private String title ;
  @Text
  @HtmlField(cssPath = "#content > div > div.news_con > div.news-content > div:nth-child(1) > div > p.go-left.post-time.c-gray")
  private String createTime;
}
@PipelineName("zjNewsDetailPipeline")
public class ZJNewsDetailPipeline implements Pipeline<ZJNewsDetail> {
  public void process(ZJNewsDetail zjNewsDetail) {
    System.out.println(zjNewsDetail.getTitle()+" "+zjNewsDetail.getCreateTime());
  }
}

Iniciar la función principal

public class Main {
  public static void main(String [] rags){
    GeccoEngine.create()
        //Ruta del paquete del proyecto
        .classpath("com.zhaochao.gecco.zj")
        //Dirección de la página donde se comenzará a capturar
        .start("http://zj.zjol.com.cn/home.html#63;pageIndex=1&pageSize=100")
        //Abrir varios hilos de rastreadores
        .thread(10)
        //El tiempo de intervalo después de que cada rastreador captura una solicitud
        .interval(10)
        //Usar userAgent del escritorio
        .mobile(false)
        //Comience a ejecutar
        .run();
  }
}

Resultados de la captura

Esto es todo el contenido del artículo, esperamos que haya sido útil para su aprendizaje y que todos nos apoyen en el tutorial de alarido.

Declaración: El contenido de este artículo se obtiene de la red, pertenece al propietario original, se contribuye y carga espontáneamente por los usuarios de Internet. Este sitio no posee los derechos de propiedad, no ha sido editado por humanos y no asume ninguna responsabilidad legal relacionada. Si encuentra contenido sospechoso de infracción de derechos de autor, le invitamos a enviar un correo electrónico a: notice#oldtoolbag.com (al enviar un correo electrónico, reemplace # con @) para denunciar y proporcionar evidencia relevante. Una vez confirmado, este sitio eliminará inmediatamente el contenido sospechoso de infracción.

Te gustará