资料参考
node安装
下载安装这个百度吧,传统套路。
node辅助插件
cmd下–
mpn:官方插件命令
cmpn:淘宝分流服务器命令
-g 安装为全局插件(可无),没有-g时要指定到操作脚本的目录,比如这里的D:\test
其他命令
npm list -g 查看插件安装列表
npm list grunt 查看指定列表
依赖插件
express 使用node中自带的http模块搭建一个简单的http服务器
superagent 第三方客户端请求代理模块,用他来请求目标页面
cheerio 相当于node版的jQuery。用于获取抓取页面元素和数据信息
http运行出错
在node执行js文件报Cannot find module express错误,可能原因:未在工程目录安装运行npm install express
js
模块互调
文件1.
let str = "aaa";
let tss = ()=>{
console.log("test!");
}
exports.miss1 = str;
exports.cT = tss;
文件2.
let fn = require('./index.js')//index前面的'.'代表同层目录,'../'代表上层目录
console.log(fn.miss1)//调用index.js中的str变量
fn.cT();//调用index.js中的tss()函数
控制台输出
throw err//throw等同console.log()
这是输出错误时的简写。
插件
superagent
插件superagent方便的访问https式链接
const superagent = require('superagent')
superagent.get('https://...').end(res=>{
console.log(res.text)
})
node自带的http功能不易访问https,更适应于http
const http = require('http')
http.get('http://..',(req,res)=>{
let html = ''
req.on('data',data=>{html+=data})//拼接数据
req.on('end',()=>{console.log(html)})//监听数据结束
})
监听http的req请求事件,请求处理函数运行过程:
req请求
处理
res响应
请求对应响应,在请求过程中,响应结束则不能重复发送响应
没有请求就没有响应。
cheerio
cheerio是node下的jQuery功能包,jQuery是js的自制函数功能包
const cheerio = require('cheerio')
//从superagent中得到的res.text后,用cheerio处理数据
let $ = cheerio.load(res.text)
$('div .name').each((idx,ele)=>{//搜索相同标签下的所有内容
let html = '',
title = $(ele).html()
items.push({
title: $ele.attr('title'),
href: $ele.attr('href'),
});
let tt=$('li).attr('href')//获得第一个标签属性。同上边的each()功能类型,只搜索一条内容
console.log(moer)
})
通过.each搜索所有class为job_name的div标签下的内容。
node服务器
var express = require('express')
var app = express()
app.listen(3000,()=>{
console.log('http://localhost:3000')
console.log('express app is running...')
})
/*
get() -写入数据
get参数1 -路由
get参数2 -参数req:请求,参数res:响应
* send()取代end(),end()取代write()
*/
app.get('/',(req,res)=>{
res.send(`
<h1>hello</h1>
<b>yahoo!</b>
<pre style="color:#000">
let a= 1.5
</pre>
`)
})
app.get('/news',(req,res)=>{
res.send('world')
})
.listen(3000,…)
是本机http://localhost:3000网页地址。
服务器内容通过.get中的.send向页面写入内容。
/news和’/‘是路由,以’/‘区分出层层路由,层层文件夹。
第一个send中的’…‘所用不是’单引号’,多行字符串引用为:键盘ESC下边的波浪符同键的·…·‘反引号’。