Maison >interface Web >js tutoriel >module de base node.js http, outil d'analyse de pages Web cherrio implémente crawler_node.js
1. Avant-propos
Il s'agit d'une exploration préliminaire des robots. En fait, il n'utilise aucune bibliothèque tierce liée aux robots. Il utilise principalement le module de base http de node.js et l'outil d'analyse de pages Web Cherrio. Utilisez http pour obtenir directement la ressource de la page Web correspondant au chemin de l'URL, puis utilisez cherrio pour l'analyser. J'ai typé ici les principaux cas que j'ai étudiés pour approfondir ma compréhension. Pendant le processus de codage, pour la première fois, j'ai parcouru directement l'objet obtenu par jq en utilisant forEach et j'ai directement signalé une erreur car jq n'avait pas de méthode correspondante et seuls les tableaux js pouvaient être appelés.
2. Points de connaissances
① : Superagent est un outil permettant de récupérer des pages Web. Je ne l'ai pas encore utilisé.
② : outil d'analyse Web cherrio, vous pouvez le comprendre comme jQuery côté serveur, car la syntaxe est la même.
Rendu
1. Capturez l'intégralité de la page Web
2. Données analysées, Les exemples fournis sont des exemples de mise en œuvre de cas.
Analyse initiale du code source du robot
var http=require('http'); var cheerio=require('cheerio'); var url='http://www.imooc.com/learn/348'; /**************************** 打印得到的数据结构 [{ chapterTitle:'', videos:[{ title:'', id:'' }] }] ********************************/ function printCourseInfo(courseData){ courseData.forEach(function(item){ var chapterTitle=item.chapterTitle; console.log(chapterTitle+'\n'); item.videos.forEach(function(video){ console.log(' 【'+video.id+'】'+video.title+'\n'); }) }); } /************* 分析从网页里抓取到的数据 **************/ function filterChapter(html){ var courseData=[]; var $=cheerio.load(html); var chapters=$('.chapter'); chapters.each(function(item){ var chapter=$(this); var chapterTitle=chapter.find('strong').text(); //找到章节标题 var videos=chapter.find('.video').children('li'); var chapterData={ chapterTitle:chapterTitle, videos:[] }; videos.each(function(item){ var video=$(this).find('.studyvideo'); var title=video.text(); var id=video.attr('href').split('/video')[1]; chapterData.videos.push({ title:title, id:id }) }) courseData.push(chapterData); }); return courseData; } http.get(url,function(res){ var html=''; res.on('data',function(data){ html+=data; }) res.on('end',function(){ var courseData=filterChapter(html); printCourseInfo(courseData); }) }).on('error',function(){ console.log('获取课程数据出错'); })
Référence :
https://github.com/alsotang/node-lessons/tree/master/lesson3