Recentemente, vi a ferramenta Gecoo Crawler, que parece simples e fácil de usar. Escreva um teste de demonstração e rastreie o site.
http://zj.zjol.com.cn/home.html, rasteja principalmente o título e o tempo de lançamento das notícias como o objeto de teste de rastreamento. É muito conveniente rastejar nós HTML selecionando nós como seletores de jQuery. O código da GECCO usa principalmente a implementação da anotação para alcançar a correspondência de URL, que parece relativamente concisa e bonita.
Adicione dependências maven
<Depencency> <voundid> com.geccacrawler </frugiD> <ArtifactId> gecco </artifactId> <versão> 1.0.8 </sipers> </dependency>
Escreva uma página de lista de rastreamento
@GECCO (matchurl = "http://zj.zjol.com.cn/home.html?pageIndex= {pageIndexa }&pagesize= {pagesize }",pipelines =" zJNewSlistpipelines ") public class ZjNewsGecColist suplemmlestslBean»; @RequestParameter private int PageIndex; @RequestParameter private int PageSize; @Htmlfield (cssspath = "#content> div> div> div.con_index> div.r.m.main_mod> div> ul> li> dl> dt> a") lista privada <Hrefbean> newlist;} @PipelineName ("ZJNewSlistpipelines") Classe public ZJNewSlistPipelines implementa o pipeline <ZjNewsGeccolist> {Public void Process (zJNewsGeccolist zjNewsGecColist) {httPrequest = zJNewSnewSgCol. Para (Hrefbean Bean: ZJNewsGeccolist.getNewlist ()) {// Digite a página auspiciosa para rastejar SchedulerContext.into (request.subrequest ("http://zj.zjol.com.cn"+bean.geturl ()); } int página = zJNewsGeccolist.getPageIndex ()+1; String nextUrl = "http://zj.zjol.com.cn/home.html?pageIndex="+page+"&pagesize=100"; // Rastreie a próxima página SchedulerContext.into (request.subrequest (NextUrl)); }} Escreva uma página de rastreamento
@GECCO (matchurl = "http://zj.zjol.com.cn/news/tursody.html", pipelines = "zjnewsdetailpipline") classe pública zJNewsDetail implementa htmlbean {@text @htmlfield (CSSPSDETAIL " @Text @htmlfield (cssspath = "#content> div> div.news_con> div.news-content> div: nth-child (1)> div> @PipelineName ("ZJNewsDetailpiPeline") Public Classe ZJNewsDetailpiPeline implementa o pipeline <ZJNewsDetail> {Public void Process (ZJNewsDetail zjnewsDetail) {System.Println (zjNewsDetil.gettle (System.T) "+zJnewsDetail.getCreateTime ()); }} Inicie a função principal
classe pública Main {public static void main (string [] rags) {geccoengine.create () // o caminho do pacote do projeto.classpath ("com.zhaochao.gecco.zj") // o endereço da página que inicia o crawling.start (htp://zj.zjol.cnome.home.start (htp://zj.zjol.cnome.home.start (http://zj.zjol.cnome.home.homk.home.hnome.hnome.hnome.hnome.hnome.hnome.home.htomsmemmemmemmemmingsmingsmingsmingsmingsmingsmingsming.htomming) // Abra vários threads de rastreador. }}Resultados de rastreamento
O exposto acima é todo o conteúdo deste artigo. Espero que seja útil para o aprendizado de todos e espero que todos apoiem mais o wulin.com.