Heim > Web-Frontend > js-Tutorial > Das Basismodul von node.js http und das Webseitenanalysetool Cherrio implementieren crawler_node.js

Das Basismodul von node.js http und das Webseitenanalysetool Cherrio implementieren crawler_node.js

WBOY
Freigeben: 2016-05-16 15:11:08
Original
1912 Leute haben es durchsucht

1. Vorwort
Es soll sich um eine vorläufige Untersuchung von Crawlern handeln. Tatsächlich werden keine Bibliotheken von Drittanbietern verwendet, die sich auf Crawler beziehen. Es werden hauptsächlich das Basismodul http von node.js und das Webseitenanalysetool cherrio verwendet. Verwenden Sie http, um die dem URL-Pfad entsprechende Webseitenressource direkt abzurufen, und analysieren Sie sie dann mit Cherrio. Hier habe ich die wichtigsten Fälle, die ich studiert habe, getippt, um mein Verständnis zu vertiefen. Während des Codierungsprozesses habe ich zum ersten Mal das von jq erhaltene Objekt direkt mit forEach durchlaufen und einen Fehler direkt gemeldet. Dies lag daran, dass jq keine entsprechende Methode hatte und nur js-Arrays aufgerufen werden konnten.

2. Wissenspunkte
①: Superagent ist ein Tool zum Erfassen von Webseiten. Ich habe es noch nicht benutzt.
②: Cherrio-Webanalysetool, Sie können es auf der Serverseite als jQuery verstehen, da die Syntax dieselbe ist.
Rendern

1. Erfassen Sie die gesamte Webseite

2. Analysierte Daten, Die bereitgestellten Beispiele sind Beispiele für die Fallumsetzung.

Erste Quellcode-Analyse des Crawlers

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('获取课程数据出错');
})
Nach dem Login kopieren

Referenz:
https://github.com/alsotang/node-lessons/tree/master/lesson3

http://www.imooc.com/video/7965

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage