Heim >Web-Frontend >js-Tutorial >So implementieren Sie den HTTP-Crawler im Knoten

So implementieren Sie den HTTP-Crawler im Knoten

亚连
亚连Original
2018-06-12 15:04:121504Durchsuche

In diesem Artikel wird hauptsächlich der Beispielcode des http-Crawlers basierend auf dem Knoten vorgestellt. Jetzt teile ich ihn mit Ihnen und gebe ihn als Referenz.

Jeden Moment, ob Sie schlafen oder nicht, werden im Internet riesige Datenmengen ein- und ausgehen, vom Kundendienst bis zum Server und von Server zu Server. Die Rolle von http's get und request besteht darin, Daten abzurufen und zu übermitteln. Als Nächstes beginnen wir mit dem Schreiben eines einfachen kleinen Crawlers, um die Kursschnittstelle des Kapitels über Knoten im Anfänger-Tutorial zu crawlen.

Kriechen Sie alle Daten auf der Node.js-Tutorial-Homepage

Erstellen Sie node-http.js. Der Code lautet wie folgt. Der Code enthält detaillierte Kommentare. Sie können es selbst verstehen. Ha

var http=require('http');//获取http模块
var url='http://www.runoob.com/nodejs/nodejs-tutorial.html';//定义node官网地址变量

http.get(url,function(res){
  var html='';

  // 这里将会触发data事件,不断触发不断跟新html直至完毕
  res.on('data',function(data){
    html +=data
  })

  // 当数据获取完成将会触发end事件,这里将会打印初node官网的html
  res.on('end',function(){
    console.log(html)
  })
}).on('error',function(){
  console.log('获取node官网相关数据出错')
})

Im Ergebnis der Terminalausführung wurde festgestellt, dass der gesamte HTML-Code dieser Seite nach unten gecrawlt wurde

G:\node\node-http> node node-http.js
<!Doctype html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<meta property="qc:admins" content="465267610762567726375" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Node.js 教程 | 菜鸟教程</title>
<link rel=&#39;dns-prefetch&#39; href=&#39;//s.w.org&#39; />
<link rel="canonical" href="http://www.runoob.com/nodejs/nodejs-tutorial.html" />
<meta name="keywords" content="Node.js 教程,node,Node.js,nodejs">
<meta name="description" content="Node.js 教程  简单的说 Node.js 就是运行在服务端的 JavaScript。 Node.js 是一个基于Chrome JavaScript 运行时建立的一个平台
。 Node.js是一个事件驱动I/O服务端JavaScript环境,基于Google的V8引擎,V8引擎执行Javascript的速度非常快,性能非常好。  谁适合阅读本教程? 如果你是一个前端程序员,你不懂得像PHP、Python或Ruby等动态编程语言,..">
<link rel="shortcut icon" href="//static.runoob.com/images/favicon.ico" rel="external nofollow" rel="external nofollow" mce_href="//static.runoob.com/images/favicon.ico" rel="external nofollow" rel="external nofollow" type="image/x-icon">
<link rel="stylesheet" href="/wp-content/themes/runoob/style.css?v=1.141" rel="external nofollow" type="text/css" media="all" />
<link rel="stylesheet" href="//cdn.bootcss.com/font-awesome/4.7.0/css/font-awesome.min.css" rel="external nofollow" media="all" />
<!--[if gte IE 9]><!-->
。。。。。。。。。。
这里只展示部分不然你半天看不到头

Natürlich ist das Crawlen von HTML nutzlos Jetzt müssen wir einige Filter durchführen, z. B. Folgendes: Im Node-Tutorial möchte ich wissen, was der Kurskatalog ist, damit ich auswählen kann, woran ich interessiert bin, und lernen kann. Gehen wir direkt zum Code:

Aber vorher müssen wir das Cheerio-Modul herunterladen (Cheerio ist das Seiten-Crawling-Modul von NodeJS, speziell für den Server angepasst, eine schnelle, flexible und implementierte jQuery-Kernimplementierung. Geeignet für alle Arten von Web-Crawler-Programmen.) Sie können selbst nach Details suchen. Die Verwendung von cheerio ist der Verwendung von jquery sehr ähnlich, sodass Sie sich keine Gedanken über den Einstieg machen müssen.

PS G:\node\node-http> npm install cheerio

Erstellen Sie node-http-more.js, der Code lautet wie folgt:

var http=require(&#39;http&#39;);//获取http模块
var cheerio=require(&#39;cheerio&#39;);//引入cheerio模块
var url=&#39;http://www.runoob.com/nodejs/nodejs-tutorial.html&#39;;//定义node官网地址变量
// filer node chapter
function filerNodeChapter(html){
  // 将爬取得HTML装载起来
  var $=cheerio.load(html);
  // 拿到左侧边栏的每个目录
  var nodeChapter=$(&#39;#leftcolumn a&#39;);
  //这里我希望我能获取的到的最终数据格式这个样子的,如此我们能知道每个目录的地址及标题
  /**
   * [{id:,title:}]
   */
  var chapterData=[];
  nodeChapter.each(function(item){
    // 获取每项的地址及标题
    var id=$(this).attr(&#39;href&#39;);
    var title=$(this).text();
    chapterData.push({
      id:id,
      title:title
    })
  })

  return chapterData;

}

//获取每个数据
function getChapterData(nodeChapter){
  nodeChapter.forEach(function(item){
    console.log(&#39; 【 &#39;+item.id+&#39; 】&#39;+item.title+&#39;\n&#39;)
  });
}

http.get(url,function(res){
  var html=&#39;&#39;;

  // 这里将会触发data事件,不断触发不断跟新html直至完毕
  res.on(&#39;data&#39;,function(data){
    html +=data
  })

  // 当数据获取完成将会触发end事件,这里将会打印初node官网的html
  res.on(&#39;end&#39;,function(){
    //console.log(html)
    // 过滤出node.js的课程目录
    var nodeChapter= filerNodeChapter(html);

    //循环打印所获取的数据
    getChapterData(nodeChapter)
  })
}).on(&#39;error&#39;,function(){
  console.log(&#39;获取node官网相关数据出错&#39;)
})

Terminal-Ausführungsergebnisse und Ausdrucken des Kursverzeichnisses

G:\node\node-http> node node-http-more.js
 【 /nodejs/nodejs-tutorial.html 】
Node.js 教程

 【 /nodejs/nodejs-install-setup.html 】
Node.js 安装配置

 【 /nodejs/nodejs-http-server.html 】
Node.js 创建第一个应用

 【 nodejs-npm.html 】 NPM 使用介绍

 【 nodejs-repl.html 】 Node.js REPL

 【 nodejs-callback.html 】 Node.js 回调函数

 【 nodejs-event-loop.html 】 Node.js 事件循环

 【 nodejs-event.html 】 Node.js EventEmitter

 【 nodejs-buffer.html 】 Node.js Buffer

 【 nodejs-stream.html 】 Node.js Stream

 【 /nodejs/nodejs-module-system.html 】
Node.js 模块系统
。。。。。。。。。。。
这里就不全部给出,你可以自己尝试着运行操作查看所有结果

Das Obige ist, was ich Für alle zusammengestellt, hoffe ich, dass es in Zukunft für alle hilfreich sein wird.

Verwandte Artikel:

So verwenden Sie SVG in React- und Vue-Projekten

Vergleichen Sie die Uhrzeit desselben Tages mit JavaScript

Verwenden Sie vue2.0.js, um einen mehrstufigen Verknüpfungsselektor zu implementieren

Verwenden Sie mint-ui, um den dreistufigen Verknüpfungseffekt von Provinzen und zu realisieren Städte

Verwenden Sie Vue, um die sekundäre Routeneinstellungsmethode zu implementieren

Erzielen Sie mehrere Routing-Implementierungen in Vue-Router2.X

Das obige ist der detaillierte Inhalt vonSo implementieren Sie den HTTP-Crawler im Knoten. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
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