Baru -baru ini saya melihat alat Gecoo Crawler, yang terasa sederhana dan mudah digunakan. Tulis tes demo dan merangkak situs web.
http://zj.zjol.com.cn/home.html, terutama merangkak judul dan rilis waktu berita sebagai objek uji crawl. Sangat nyaman untuk merangkak node HTML dengan memilih node seperti pemilih jQuery. Kode GECCO terutama menggunakan implementasi anotasi untuk mencapai pencocokan URL, yang terlihat relatif ringkas dan indah.
Tambahkan dependensi Maven
<dependency> <GroupId> com.geccacrawler </groupid> <ArTifactId> gecco </artifactid> <version> 1.0.8 </version> </dependency>
Tulis halaman daftar perayapan
@Gecco (matchUrl = "http://zj.zjol.com.cn/home.html?pageIndex={pageIndex}&pagesize=.pagageze}",pipelines =" zjnewslistpipelines ") zjnewsgeccolist; @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") daftar pribadi <hrefbean> newList;} @PipelineName("zJNewsListPipelines")public class ZJNewsListPipelines implements Pipeline<ZJNewsGeccoList> { public void process(ZJNewsGeccoList zjNewsGeccoList) { HttpRequest request=zjNewsGeccoList.getRequest(); untuk (hrefbean bean: zjnewsgecolist.getNewList ()) {// Masukkan halaman yang menguntungkan ke Crawl SchedulerContext.into (request.subrequest ("http://zj.zjol.com.cn"+bean.geturl ()); } int halaman = zjnewsgeccolist.getPageIndex ()+1; String nextUrl = "http://zj.zjol.com.cn/home.html?pageIndex="+Page+"&PageSize=100"; // merangkak halaman berikutnya penjadwalan Context.into (request.subrequest (nextUrl)); }} Tulis halaman merangkak
@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-grey") creatime string pribadi;} @Pipelinename ("zjnewsdetailpipeline") kelas publik zjnewsdetailpipeline mengimplementasikan pipa <zjnewsdetail> {public void Process (zjnewsdetail zjnewsdetail) {System.out.println (zjnewsdetail "+zjnewsdetail.getCreateTime ()); }} Mulai fungsi utama
Kelas Publik Main {public static void main (string [] rags) {geccoengine.create () // jalur paket proyek.classpath ("com.zhaochao.gecco.zj") // alamat halaman yang dimulai crawling.start ("http://zj.zjol.com.cn.cn/start (http:/zj.zjol.com.cn/cn/cning= // buka beberapa crawler threads.thread (10) // interval antara crawler tunggal setelah setiap merangkak permintaan.interval (10) // Gunakan PC userAgent .mobile (false) // mulai run.run (); }}Hasil merangkak
Di atas adalah semua konten artikel ini. Saya berharap ini akan membantu untuk pembelajaran semua orang dan saya harap semua orang akan lebih mendukung wulin.com.