Recientemente vi la herramienta Gecoo Crawler, que se siente simple y fácil de usar. Escriba una prueba de demostración y gatea en el sitio web.
http://zj.zjol.com.cn/home.html, rastrea principalmente el título y el tiempo de lanzamiento de las noticias como objeto de prueba de rastreo. Es muy conveniente rastrear nodos HTML seleccionando nodos como selectores jQuery. El código GECCO utiliza principalmente la implementación de anotaciones para lograr la coincidencia de URL, que se ve relativamente conciso y hermosa.
Agregar dependencias maven
<Spendency> <MoupRid> com.geccacrawler </groupid> <artifactid> gecco </artifactid> <versever> 1.0.8 </versión> </pendency>
Escribe una página de lista de rastreo
@Gecco (matchurl = "http://zj.zjol.com.cn/home.html?pageIndex= =PageIndexhhing=pagesize= /pagesizeh",pipelines =" ZJNeWSlistPipelines ") CLASS ZJNEWSGECCOLUST implementa htmlBean {@RequeStpipelines"). @RequestParameter Private int PageIndex; @RequestParameter Private int PAGESIZE; @Htmlfield (csspath = "#content> div> div> div.con_index> div.r.main_mod> div> ul> dl> dt> a") Lista privada <hrefbean> NewList;} @PipelInename ("ZJNeWSlistPipElines") clase pública ZJNeWSLISTPIPELINES INPERIENTES <ZJNewsGECCOLIST> {Public void Process (ZJNewsGeccolist ZjnewsGeccolist) {httprequest solicitud = ZJnewsgecolist.getReCest ();); para (hrefbean bean: zjnewsgeccolist.getNewList ()) {// Ingrese la página auspiciosa para rastrear 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?pageindex="+page+"&pagesize=100"; // rastrear la siguiente página SchedulerContext.into (request.subrequest (nextUrl)); }} Escribe una página de rastreo
@Gecco (matchurl = "http://zj.zjol.com.cn/news/•codefont>html", tubelines = "zjnewsdetailpipeline") clase pública zjnewsdetail implementa htmlbean {@text @htmlfield (csspath = "#headline") Título de la cadena privada; @Text @htmlfield (csspath = "#content> div> div.news_con> div.news-Content> Div: nth-child (1)> div> p.go-left.post-time.c-gray") String privado createTime;} @Pipelinename ("zjnewsdetailpipeline") clase pública ZJNewsDetailpipeline implementa tubería <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 () // La ruta del paquete del proyecto.classpath ("com.zhaochao.gecco.zj") // la dirección de página que inicia crawling.ststart ("http://zjjjol.com.cn/home.html? // Abra varios hilos de rastreador.thread (10) // El intervalo entre un solo rastreador después de cada rastreo de una solicitud. Interval (10) // use PC userAgent .Mobile (falso) // inicio run.run (); }}Resultados de rastreo
Lo anterior es todo el contenido de este artículo. Espero que sea útil para el aprendizaje de todos y espero que todos apoyen más a Wulin.com.