学习node记录--爬爬(2,主体

资料参考

参考爬虫教程

node安装

下载安装这个百度吧,传统套路。

node辅助插件

cmd下–
0
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下边的波浪符同键的·…·‘反引号’。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值