node解析html获取图片内容,node中使用cheerio爬取并解析html网页

cheerio用于node环境,用法与语法都类似于jquery。jquery本身也可以用于node,在借助于第三方库jsdom的情况下,详见:https://www.npmjs.com/package/jquery

安装

npm install cheerio

使用

const cheerio = require('cheerio')

const $ = cheerio.load('

Hello world

')

$('h2.title').text('Hello there!')

$('h2').addClass('welcome')

$.html()

//=>

Hello there!

运用

场景

分析html源码

重点关注class="article-list-link"的,提取它里attr属性与text内容,就算完成目标了。

...

代码与注释说明

var request = require('request')

const cheerio = require('cheerio')

var http = (uri) => {

return new Promise((resolve, reject) => {

request({

uri: uri,

method: 'GET'

}, (err, response, body) => {

if (err) {

console.log(err)

}

resolve(body)

})

})

}

(function () {

// 定义目标网址

var target = 'https://support.fcoin.com/hc/zh-cn/sections/360000782633-%E6%9C%80%E6%96%B0%E5%85%AC%E5%91%8A'

// 使用request.js库发送get请求

http(target).then(html => {

// 载入并初始化cheerio

const $ = cheerio.load(html)

// 取出目标节点,即带article-list-link css类的

var linksDom = $('a.article-list-link')

// 遍历dom集数组

linksDom.each((index, item) => {

// 取出title,注意这里使用了$(item),而不是item本身

var title = $(item).text()

// 类似地,取出链接地址

var url = $(item).attr('href')

// 解码可选,为了让结果显示中文汉字更直观

url = decodeURIComponent(url)

// 由于href使用的是相对于根目标的路径,因而从目标网址中提取域名前缀拼接上

url = target.match(/(\w+:\/\/[^/:]+)([^# ]*)/)[1] + url

// 输出到控制台预览结果

console.log(title)

console.log(url)

})

})

})()

预览结果

8e4a83e7c376

result.png

对比说明

相比纯正则表达式解析,使用cheerio轻松,语义也清晰,特别适合html文本这种特定环境下使用。

8e4a83e7c376

mp

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值