nodejs学習ノートのURLモジュール
6538 ワード
URLモジュール
このモジュールはurlアドレスを解析してくれます.中から多くの有用な内容を取り出して使ってくれます.
url.parse(url String[,parseQueryString]]
解析したオブジェクトに戻ります.最初のパラメータは解析するurlアドレス、二つ目のパラメータはquery文字列をオブジェクト形式に解析するかどうか、二つ目のパラメータはプロトコルがない場合はドメイン名などを解析するかどうかを制御します.
url.format(urlObject)
一つのurlを解析したオブジェクトをurlアドレスに戻します.
url.resove(from,to)
私達の二段のurlを一つのurl住所に解析できます.
私たちのqueryString文字列(a=1&b=2&c=3)を解析または逆コンパイルできます.
querystrings.strigify(obj[,sep[,eq[,options]]):
一つのオブジェクト(キーの値ペア)を一つのquerystringに解析できます.二つ目のパラメータは分割記号(&)、三つ目のパラメータはキーパッドのペア間のリンク記号(=)を設定できます.
querystring.parse(str[,sep[,eq[,options]])
一つのQs文字列を一つのオブジェクトに解析できます.後ろのパラメータはある規則に従って解析します.
querystring.escape(str)、querystring.unescape(str)
私達の中国語を百分コードに解析できます.
http.get方法を利用して、あるURLのファイルの内容を取得して、cherioツールを利用して、重要な内容の抽出を行います.
1.モジュールの導入とグローバル変数の設定
get方法は、あるURLのファイルの内容、最初のパラメータurlアドレス(登用するURL)を取得するためにシミュレーション要求を行うことができます.コールバック関数は、resオブジェクトにいくつかのイベントをバインドして動作します.
request Get/request Post
requestによってデータをgetする(要求されるのは豆板映画のapi):
1.モジュールの導入とグローバル変数の設定
1.モジュールの導入とグローバル変数の設定
nodejsはイベントの駆動です.例えば、前のresはdata、endイベントがあります.私達も対象を作って、イベントを定義して、ある状況でこの事件を触発します.
頼っているのはeventsモジュールです.お願いしたのはeventEmitter類です.
このモジュールはurlアドレスを解析してくれます.中から多くの有用な内容を取り出して使ってくれます.
url.parse(url String[,parseQueryString]]
解析したオブジェクトに戻ります.最初のパラメータは解析するurlアドレス、二つ目のパラメータはquery文字列をオブジェクト形式に解析するかどうか、二つ目のパラメータはプロトコルがない場合はドメイン名などを解析するかどうかを制御します.
url.format(urlObject)
一つのurlを解析したオブジェクトをurlアドレスに戻します.
url.resove(from,to)
私達の二段のurlを一つのurl住所に解析できます.
console.log(url.resolve('http://www.baidu.com','/api/index.html'))
//'http://www.baidu.com/api/index.html'
queryString私たちのqueryString文字列(a=1&b=2&c=3)を解析または逆コンパイルできます.
querystrings.strigify(obj[,sep[,eq[,options]]):
一つのオブジェクト(キーの値ペア)を一つのquerystringに解析できます.二つ目のパラメータは分割記号(&)、三つ目のパラメータはキーパッドのペア間のリンク記号(=)を設定できます.
querystring.parse(str[,sep[,eq[,options]])
一つのQs文字列を一つのオブジェクトに解析できます.後ろのパラメータはある規則に従って解析します.
querystring.escape(str)、querystring.unescape(str)
私達の中国語を百分コードに解析できます.
console.log(qs.escape(' '))//%E5%8C%97%E4%BA%AC
console.log(qs.unescape('%E5%8C%97%E4%BA%AC'))//
http小爬虫http.get方法を利用して、あるURLのファイルの内容を取得して、cherioツールを利用して、重要な内容の抽出を行います.
1.モジュールの導入とグローバル変数の設定
// https ( https)
var https=require('https');
//cheerio html jq , jq
var cheerio=require('cheerio');
//
var url='https://www.lagou.com/';
2.要求データget方法は、あるURLのファイルの内容、最初のパラメータurlアドレス(登用するURL)を取得するためにシミュレーション要求を行うことができます.コールバック関数は、resオブジェクトにいくつかのイベントをバインドして動作します.
https.get(url,function(res){
//
var html='';
//data , chunk( )
res.on('data',function(chunk){
html+=chunk;
})
//end
res.on('end',function(){
//
var menuData=filterMenu(html);
//
controlMenu(menuData)
})
//error ,
res.on("error",function(err){
console.log(err)
})
});
3.設計データ構造//
//[
// {
// menuTitle:' ',
// menuList:[
// 'java','php'
// ]
// }
//]
4.html文字列を解析し、内容を抽出する関数function filterMenu(html){
// html jq
var $=cheerio.load(html);
//
var menuData=[];
// dom
var menu=$(".menu_main");
// , ,
menu.each(function(i,value){
var menuTitle=$(value).find('h2').text();
var menuLists=$(value).find('a');
var menuList=[];
menuLists.each(function(i,value){
menuList.push($(value).text())
})
menuData.push({
menuTitle:menuTitle,
menuList:menuList
})
})
return menuData;
}
5.抽出した内容を処理する関数は、ここでは出力のみを行います.//
function controlMenu(menu){
menu.forEach(function(item,index){
console.log(item.menuTitle+'
');
item.menuList.forEach(function(item,index){
console.log(item+'
');
})
})
}
主な技術点:https、https.get、data、end、error事件、cherioモジュールrequest Get/request Post
requestによってデータをgetする(要求されるのは豆板映画のapi):
1.モジュールの導入とグローバル変数の設定
// https
const https = require('https');
//
//http 80,https 443
var options = {
hostname: 'api.douban.com',
port: 443,
path: '/v2/movie/in_theaters',
method: 'GET'
};
2.設定要求のプロセス//
var req = https.request(options, (res) => {
console.log(' :', res.statusCode);
console.log(' :', res.headers);
var requestData='';
res.on('data', (chunk) => {
requestData+=chunk;
});
res.on('end',function(){
console.log(JSON.parse(requestData).subjects[0].title)
})
});
//
req.on('error', (e) => {
console.error(e);
});
// end
req.end();
requestのpost方法によってレビュー(控除丁学堂)を行います.1.モジュールの導入とグローバル変数の設定
// http qs
const http = require('http');
const qs=require('querystring');
// , querystring(a=1&b=2)
var postData=qs.stringify({
'question[title]':'1701 ',
'question[content]':'1701
',
'question[courseId]':'221',
'question[lessonId]':'1698',
'_csrf_token':'4df960e69a84f1a05b551cd66cff159f7bd70349'
})
2.プロファイル要求のオプションvar options = {
hostname: 'www.codingke.com',
port: 80,
path: '/ajax/create/course/question',
method: 'POST',
headers:{// headers, cookie ,
'Accept':'*/*',
'Accept-Encoding':'gzip, deflate',
'Accept-Language':'zh-CN,zh;q=0.8',
'Connection':'keep-alive',
'Content-Length':postData.length,
'Content-Type':'application/x-www-form-urlencoded; charset=UTF-8',
'Cookie':'PHPSESSID=a7hmtvdr7odale2npuoe8kquo1; UM_distinctid=15bcc291625965-0b7625ecfa7e2b-4e47052e-100200-15bcc29162651c; CNZZDATA1256018185=1628677493-1493778687-null%7C1493778687; Hm_lvt_9f92046de4640f3c08cf26535ffdd93c=1493778896; Hm_lpvt_9f92046de4640f3c08cf26535ffdd93c=1493778931',
'Host':'www.codingke.com',
'Origin':'http://www.codingke.com',
'Referer':'http://www.codingke.com/v/326-chapter-221-course',
'User-Agent':'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/57.0.2987.133 Safari/537.36',
'X-CSRF-Token':'4df960e69a84f1a05b551cd66cff159f7bd70349',
'X-Requested-With':'XMLHttpRequest'
}
};
3.送信手順の設定//
var req = http.request(options, (res) => {
res.on('data', (chunk) => {
console.log(chunk.toString())
});
res.on('end',function(){
console.log(' ')
})
});
//
req.on('error', (e) => {
console.error(e);
});
//
req.write(postData)
// end
req.end();
イベントエピターnodejsはイベントの駆動です.例えば、前のresはdata、endイベントがあります.私達も対象を作って、イベントを定義して、ある状況でこの事件を触発します.
頼っているのはeventsモジュールです.お願いしたのはeventEmitter類です.
// EventEmitter , class
const EventEmitter=require('events')
// Player EventEmitter
class Player extends EventEmitter {};
//
var player=new Player();
//
player.on("play",(name)=>{
console.log(' :'+name)
})
//
player.emit('play',' ');