この記事の内容は、ノードがWebページから画像をクロールする方法についてです(コード付き)。必要な友人が参考になれば幸いです。
ノードをインストールして依存関係をダウンロードします
サービスを構築します
クロールしたいページをリクエストしてjsonを返します
ノードのインストールを開始します。公式 Web サイト https://nodejs.org/zh-cn/ からダウンロードします。ダウンロードが完了したら、node を実行して使用します。
node -v
インストールが成功すると、インストールしたバージョン番号が表示されます。
次に、node を使用して hello world を出力し、index.js という名前の新しいファイルを作成して入力します
console.log('hello world')
このファイルを実行すると
node index.js
、コントロール パネルに hello world が出力されます
新しい名前はノードのフォルダーです。
まず、Express の依存関係をダウンロードする必要があります
npm install express
次に、以下に示すようなディレクトリ構造で、demo.js という名前の新しいファイルを作成します:
ダウンロードした Express を demo.js に導入します
const express = require('express'); const app = express(); app.get('/index', function(req, res) { res.end('111') }) var server = app.listen(8081, function() { var host = server.address().address var port = server.address().port console.log("应用实例,访问地址为 http://%s:%s", host, port) })
ノードのデモを実行します。 js シンプルなサービス 図に示すようにセットアップされています。
クロールしたいページをリクエストします
npm install superagent npm install superagent-charset npm install cheerio
Superagent は、軽量でプログレッシブな Ajax API です。可読性が高く、学習時間が短く、nodejs 環境に適した、nodejs ネイティブ リクエスト API への内部依存性があり、クロールされたデータの文字化けを防ぐために http を使用してリクエストを開始したり、文字形式を変更したりすることもできます
。 Cheerio から サーバー用に特別にカスタマイズされた、高速かつ柔軟で実装された jQuery コア実装。 依存関係をインストールした後、それを導入できます
var superagent = require('superagent'); var charset = require('superagent-charset'); charset(superagent); const cheerio = require('cheerio');
導入後、図に示すように、アドレス https://www.qqtn.com/tx/weixintx_1.html をリクエストします:
アドレスを宣言します変数:
const baseUrl = 'https://www.qqtn.com/'
these 設定後、リクエストを送信します。次に、完全なコードをご覧ください。demo.js
var superagent = require('superagent'); var charset = require('superagent-charset'); charset(superagent); var express = require('express'); var baseUrl = 'https://www.qqtn.com/'; //输入任何网址都可以 const cheerio = require('cheerio'); var app = express(); app.get('/index', function(req, res) { //设置请求头 res.header("Access-Control-Allow-Origin", "*"); res.header('Access-Control-Allow-Methods', 'PUT, GET, POST, DELETE, OPTIONS'); res.header("Access-Control-Allow-Headers", "X-Requested-With"); res.header('Access-Control-Allow-Headers', 'Content-Type'); //类型 var type = req.query.type; //页码 var page = req.query.page; type = type || 'weixin'; page = page || '1'; var route = `tx/${type}tx_${page}.html` //网页页面信息是gb2312,所以chaeset应该为.charset('gb2312'),一般网页则为utf-8,可以直接使用.charset('utf-8') superagent.get(baseUrl + route) .charset('gb2312') .end(function(err, sres) { var items = []; if (err) { console.log('ERR: ' + err); res.json({ code: 400, msg: err, sets: items }); return; } var $ = cheerio.load(sres.text); $('div.g-main-bg ul.g-gxlist-imgbox li a').each(function(idx, element) { var $element = $(element); var $subElement = $element.find('img'); var thumbImgSrc = $subElement.attr('src'); items.push({ title: $(element).attr('title'), href: $element.attr('href'), thumbSrc: thumbImgSrc }); }); res.json({ code: 200, msg: "", data: items }); }); }); var server = app.listen(8081, function() { var host = server.address().address var port = server.address().port console.log("应用实例,访问地址为 http://%s:%s", host, port) })
demo.js を実行すると、図に示すように、取得したデータが返されます。簡易ノードクローラが完成しました。
関連する推奨事項:
ノード クローラー gbk Web ページ 中国語の文字化け解決策_html/css_WEB-ITnose
ノード下の http 小型クローラーのサンプル コード共有以上がノードが Web ページから画像をクロールする方法 (コードは添付)の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。