node 不用讲了 都知道是什么
cheerio 是一个在node端 的jquert 可以对爬取的页面数据 想 jquery一样去处理
2.使用的node的内置模块 https 先爬取一下网站(注意:一定是https的如果爬取http的 ,请修改一下,下面的代码)
// 引入 https 模块
const https = require('https')
// 定义一个爬取的 url网址
let url = 'https://blog.dbsgw.cn/'
// 通过 https 发送一个请求
https.get(url, res => {
//拼接请求流
let chunks = []
// 接收的请求流 字段
res.on('data', function(chunk) {
// 把请求流 字段 放到 上面定义的数组中去
chunks.push(chunk)
})
// 接收请求流的 触发事件
res.on('end', function() {
console.log('数据包传输完毕')
// 把 接收完的数组 进行concat拼接 利用Tostring 转码为 utf-8 方便查看
let html = Buffer.concat(chunks).toString('utf-8')
console.log(html)
})
})
3. 通过上面的代码 你会发现 ,你爬取到的是一些html标签, 但是都不是你想的 你想要的是 html标签的部分 内容 那么就可以通过 cheerio这个node(服务器)版 jQuery来 获取 你想的 内容
①安装 npm i cheerio
②使用dome
const cheerio = require('cheerio')
const $ = cheerio.load('<h2 class="title">Hello world</h2>')
$('h2.title').text('Hello there!')
$('h2').addClass('welcome')
$.html()
//=> <html><head></head><body><h2 class="title welcome">Hello there!</h2></body></html>
// 引入 https 模块
const https = require('https')
// 引入cheerio这个包
const cheerio = require('cheerio')
// 定义一个爬取的 url网址
let url = 'https://blog.dbsgw.cn/'
// 通过 https 发送一个请求
https.get(url, res => {
//拼接请求流
let chunks = []
// 接收的请求流 字段
res.on('data', function(chunk) {
// 把请求流 字段 放到 上面定义的数组中去
chunks.push(chunk)
})
// 接收请求流的 触发事件
res.on('end', function() {
console.log('数据包传输完毕')
// 把 接收完的数组 进行concat拼接 利用Tostring 转码为 utf-8 方便查看
let html = Buffer.concat(chunks).toString('utf-8')
// 通过 cheerio.load(html) 转换成 cheerio 能处理的 元素
const $ = cheerio.load(html)
// 通过 $('.content') 类似于css3选择器方式 获取内容 是不是很方便
console.log($('.content').html())
})
})
一个简单的 node 爬虫就实现了 数据都获取到了 在存到数据库 就很简单了吧 这里就不演示保存数据了
获取网页图片小案例
// 引入 https 模块
const https = require('https')
// 引入cheerio这个包
const cheerio = require('cheerio')
// 定义一个爬取的 url网址
let url = 'https://blog.dbsgw.cn/'
// 通过 https 发送一个请求
https.get(url, res => {
//拼接请求流
let chunks = []
// 接收的请求流 字段
res.on('data', function(chunk) {
// 把请求流 字段 放到 上面定义的数组中去
chunks.push(chunk)
})
// 接收请求流的 触发事件
res.on('end', function() {
console.log('数据包传输完毕')
// 把 接收完的数组 进行concat拼接 利用Tostring 转码为 utf-8 方便查看
let html = Buffer.concat(chunks).toString('utf-8')
// 通过 cheerio.load(html) 转换成 cheerio 能处理的 元素
const $ = cheerio.load(html)
//通过 Array原型上面的内容获取网页上的图片
// const html_body = Array.prototype.map.call($('img'), item =>
// $(item).attr('src')
// )
// 通过循环获取
const html_body = []
$('img').each((index, item) => {
html_body.push($(item).attr('src'))
})
// 通过 $('.content') 类似于css3选择器方式 获取内容 是不是很方便
console.log(html_body)
})
})
发表评论