Heim  >  Artikel  >  Web-Frontend  >  Beispielcode für die gemeinsame Nutzung des HTTP-Crawlers unter dem Knoten

Beispielcode für die gemeinsame Nutzung des HTTP-Crawlers unter dem Knoten

小云云
小云云Original
2018-01-13 09:10:071462Durchsuche

In diesem Artikel wird hauptsächlich der auf dem Knoten basierende Beispielcode des http-Crawlers vorgestellt. Jetzt werde ich ihn mit Ihnen teilen und als Referenz verwenden. Folgen wir dem Herausgeber und schauen wir uns das an. Ich hoffe, es kann allen helfen.

Jeden Moment, egal ob Sie schlafen oder nicht, werden im Internet riesige Datenmengen ein- und ausgehen, vom Kundenservice 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='/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.php.cn/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 nützt uns das Crawlen von HTML nichts. In diesem Knoten-Tutorial möchte ich zum Beispiel wissen, was der Kurskatalog ist , damit ich diejenigen auswählen kann, die mich interessieren und die ich lernen möchte. 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.php.cn/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;)
})

Ergebnisse der Terminalausführung und Ausdrucken des Kurskatalogs


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 模块系统
。。。。。。。。。。。
这里就不全部给出,你可以自己尝试着运行操作查看所有结果

Verwandte Empfehlungen:

Detaillierte Erläuterung des Webanforderungsmoduls von Node. js-Crawler

Node.js Information Crawler Entwicklungsprozess Code-Sharing

NodeJS Encyclopedia Crawler Beispiel-Tutorial

Das obige ist der detaillierte Inhalt vonBeispielcode für die gemeinsame Nutzung des HTTP-Crawlers unter dem 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