J'ai récemment vu l'outil Geco Crawler, qui semble simple et facile à utiliser. Écrivez un test de démonstration et rampez le site Web.
http://zj.zjol.com.cn/home.html, rampe principalement le titre et le moment de publication de l'actualité comme objet de test de rampe. Il est très pratique de ramper les nœuds HTML en sélectionnant des nœuds comme les sélecteurs jQuery. Le code GECCO utilise principalement l'implémentation d'annotation pour atteindre la correspondance d'URL, qui semble relativement concise et belle.
Ajouter des dépendances Maven
<dependency> <proupId> com.geccacrawler </rom groupeid> <letifactive> gecco </retifactid> <version> 1.0.8 </-version> </Dependance>
Écrivez une page de liste de manche
@Gecco (matchurl = "http://zj.zjol.com.cn/home.html?pageIndex={pageIndex }&pagesize={pageSize }",pipelines =" ZJNewsListPipelines ") public class ZjnewSgecColist impulsion htmlbean {@request private @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") Liste privée <hrefbean> newlist;} @PipelineName ("ZjnewsListPipelines") Classe publique ZjnewsListPipelines implémente Pipeline <ZjnewSgecColist> {Public Void Process (ZjNewSgecColist ZjnewSgeCcoolist) {httprequest demande = zjnewsgeccolist.getRequest (); pour (hrefbean bean: zjnewsgeccoolist.getNewList ()) {// entrez la page de bon augure pour craquer ScheduleContext.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"; // Crawl de la page suivante ScheduleConText.into (request.subrequest (nextUrl)); }} Écrivez une page rampante
@Gecco (MatchUrl = "http://zj.zjol.com.cn/news/[code Dormal.html", Pipelines = "ZjnewsdetailPipeline") Public class Zjnewsdetail implémente htmlbean {@text @htmlfield (cssspath = "#headline") Title privé; @Text @htmlfield (cssspath = "#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") Classe publique ZJNewSdetailPipeline implémente le pipeline <Zjnewsdetail> {public void Process (ZjnewsDetail Zjnewsdetail) {System.out.println (zjnewsdetail.getTitle () + " "+ zjnewsdetail.getCreateTime ()); }} Démarrer la fonction principale
classe publique Main {public static void Main (String [] rags) {geccoenge.create () // le chemin du package du projet.classpath ("com.zhaochao.gecco.zj") // l'adresse de la page qui démarre Crawling.start ("http://zj.zjol.com.cn/home.html?page // Ouvre plusieurs threads de robot. }}Résultats de la gamme
Ce qui précède est tout le contenu de cet article. J'espère que cela sera utile à l'apprentissage de tous et j'espère que tout le monde soutiendra davantage Wulin.com.