ノード下の http クローラーのサンプル コード共有
この記事では、主にノードベースの http クローラーのサンプル コードを紹介します。これが非常に優れていると考えたので、参考として共有します。編集者をフォローして見てみましょう。皆さんのお役に立てれば幸いです。
寝ているかどうかに関係なく、顧客サービスからサーバーへ、そしてサーバーからサーバーへ、インターネット上ではあらゆる瞬間に大量のデータが行き来します。 http の get およびリクエストによって完了する役割は、データを取得して送信することです。次に、初心者向けチュートリアルのノードに関する章のコース インターフェイスをクロールするための単純な小さなクローラーの作成を開始します。
Node.jsチュートリアルのホームページにあるすべてのデータをクロールします
node-http.jsを作成します。コードは次のとおりです。コードには詳細なコメントがあり、自分で理解できます
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官网相关数据出错') })
このページの HTML はすべてクロールされています
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='dns-prefetch' href='//s.w.org' /> <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]><!--> 。。。。。。。。。。 这里只展示部分不然你半天看不到头
もちろん、HTML をクロールしても役に立ちません。たとえば、次の例では、フィルタリングを行う必要があります。ノードのチュートリアル、選択できるようにコース カタログが何なのか知りたいです。興味があれば、見て学んでください。コードに直接進みましょう:
その前に、cheerio モジュールをダウンロードする必要があります (cheerio は、nodejs のページ クローリング モジュールであり、サーバー用に特別にカスタマイズされた高速で柔軟な実装された jQuery コア実装です。さまざまな Web クローラー プログラムに適しています) ) 詳しい紹介は自分で検索できますが、cheerio の使い方は jquery の使い方とよく似ているので、心配する必要はありません。
PS G:\node\node-http> npm install cheerio
node-http-more.jsを作成します。コードは次のとおりです:
var http=require('http');//获取http模块 var cheerio=require('cheerio');//引入cheerio模块 var url='http://www.php.cn/nodejs/nodejs-tutorial.html';//定义node官网地址变量 // filer node chapter function filerNodeChapter(html){ // 将爬取得HTML装载起来 var $=cheerio.load(html); // 拿到左侧边栏的每个目录 var nodeChapter=$('#leftcolumn a'); //这里我希望我能获取的到的最终数据格式这个样子的,如此我们能知道每个目录的地址及标题 /** * [{id:,title:}] */ var chapterData=[]; nodeChapter.each(function(item){ // 获取每项的地址及标题 var id=$(this).attr('href'); var title=$(this).text(); chapterData.push({ id:id, title:title }) }) return chapterData; } //获取每个数据 function getChapterData(nodeChapter){ nodeChapter.forEach(function(item){ console.log(' 【 '+item.id+' 】'+item.title+'\n') }); } 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) // 过滤出node.js的课程目录 var nodeChapter= filerNodeChapter(html); //循环打印所获取的数据 getChapterData(nodeChapter) }) }).on('error',function(){ console.log('获取node官网相关数据出错') })
ターミナルの実行結果とコースディレクトリを出力します
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 模块系统 。。。。。。。。。。。 这里就不全部给出,你可以自己尝试着运行操作查看所有结果
関連する推奨事項:
Node。 jsクローラー Webページリクエストモジュールの詳細説明
以上がノード下の http クローラーのサンプル コード共有の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック









Go 言語のインデント仕様と例 Go 言語は Google によって開発されたプログラミング言語であり、その簡潔で明確な構文で知られており、インデント仕様はコードの読みやすさと美しさに重要な役割を果たします。この記事ではGo言語のインデントの仕様を紹介し、具体的なコード例を通して詳しく解説します。インデントの仕様 Go 言語では、スペースの代わりにタブがインデントに使用されます。インデントの各レベルは 1 つのタブで、通常はスペース 4 個の幅に設定されます。このような仕様により、コーディング スタイルが統一され、チームが協力してコンパイルできるようになります。

Oracle の DECODE 関数は、クエリ ステートメントのさまざまな条件に基づいてさまざまな結果を返すためによく使用される条件式です。この記事ではDECODE関数の構文・使い方・サンプルコードを詳しく紹介します。 1. DECODE 関数の構文 DECODE(expr,search1,result1[,search2,result2,...,default]) expr: 比較する式またはフィールド。検索1、

HTTP 301 ステータス コードの意味を理解する: Web ページ リダイレクトの一般的なアプリケーション シナリオ インターネットの急速な発展に伴い、Web ページの操作に対する人々の要求はますます高くなっています。 Web デザインの分野では、Web ページのリダイレクトは一般的かつ重要なテクノロジであり、HTTP 301 ステータス コードによって実装されます。この記事では、HTTP 301 ステータス コードの意味と、Web ページ リダイレクトにおける一般的なアプリケーション シナリオについて説明します。 HTTP301 ステータス コードは、永続的なリダイレクト (PermanentRedirect) を指します。サーバーがクライアントのメッセージを受信すると、

ピン張りのノードの詳細な説明とインストールガイドこの記事では、ピネットワークのエコシステムを詳細に紹介します - PIノードは、ピン系生態系における重要な役割であり、設置と構成の完全な手順を提供します。 Pinetworkブロックチェーンテストネットワークの発売後、PIノードは多くの先駆者の重要な部分になり、テストに積極的に参加し、今後のメインネットワークリリースの準備をしています。まだピン張りのものがわからない場合は、ピコインとは何かを参照してください。リストの価格はいくらですか? PIの使用、マイニング、セキュリティ分析。パインワークとは何ですか?ピン競技プロジェクトは2019年に開始され、独占的な暗号通貨PIコインを所有しています。このプロジェクトは、誰もが参加できるものを作成することを目指しています

Python 関数の紹介: isinstance 関数の使用法と例 Python は、プログラミングをより便利かつ効率的にするための多くの組み込み関数を提供する強力なプログラミング言語です。非常に便利な組み込み関数の 1 つは isinstance() 関数です。この記事では、isinstance関数の使い方と例を紹介し、具体的なコード例を紹介します。 isinstance() 関数は、オブジェクトが指定されたクラスまたは型のインスタンスであるかどうかを判断するために使用されます。この関数の構文は次のとおりです

HTTP ステータス コード 200: 成功した応答の意味と目的を調べる HTTP ステータス コードは、サーバーの応答のステータスを示すために使用される数値コードです。このうち、ステータス コード 200 は、リクエストがサーバーによって正常に処理されたことを示します。この記事では、HTTP ステータス コード 200 の具体的な意味と使用法について説明します。まず、HTTP ステータス コードの分類を理解しましょう。ステータス コードは、1xx、2xx、3xx、4xx、5xx の 5 つのカテゴリに分類されます。このうち、2xx は成功応答を示します。 200 は 2xx で最も一般的なステータス コードです

解決策: 1. リクエスト ヘッダーの Content-Type を確認する; 2. リクエスト本文のデータ形式を確認する; 3. 適切なエンコード形式を使用する; 4. 適切なリクエスト メソッドを使用する; 5. サーバー側のサポートを確認する。

HTTP リクエストがタイムアウトになり、サーバーから 504GatewayTimeout ステータス コードが返されることがよくあります。このステータス コードは、サーバーがリクエストを実行しても、リクエストに必要なリソースを取得できないか、一定時間が経過してもリクエストの処理を完了できないことを示します。これは 5xx シリーズのステータス コードで、サーバーに一時的な問題または過負荷が発生し、その結果クライアントのリクエストを正しく処理できなくなったことを示します。 HTTP プロトコルでは、さまざまなステータス コードに特定の意味と用途があり、504 ステータス コードはリクエストのタイムアウトの問題を示すために使用されます。顧客の中で
