首页 技术 正文
技术 2022年11月21日
0 收藏 934 点赞 2,649 浏览 1962 个字

做node爬虫,首先像如何的去做这个爬虫,首先先想下思路,我这里要爬取一个页面的数据,要调取网页的数据,转换成页面格式(html+div)格式,然后提取里面独特的属性值,再把你提取的值,传送给你的页面上,在你前端页面显示,或者让你的前端页面能够去调取这些返回的值。

首先要安装以下的依赖

// 调取
npm install --save request-promise
// 转换成页面格式
npm install --save cheerio
// 打开node使用
npm install --save express
// 安装依赖
npm install --save request

  然后在代码中去使用依赖东西,来转换页面格式调取页面值

        // 把网址转换成页面格式
let result = await request(URI)
$ = cheerio.load(result)
// 获取表头文本
let name = $('#activity-name').text()
name = name.replace(/\ +/g,"")
name = name.replace(/[\r\n]/g,"");
name = `<h1>${name}</h1>`
// 获取内容文本
let test = $('#js_content').text()
test = test.replace(/[\r\n]/g,"");
test = `<p>${test}</p>`

  在页面中获取页面值上面的代码是没有问题的,重点事爬取图片

在普通的浏览器页面上爬取图片的时候,直接获取他的src就可以,但是有些很是特殊的,下面的代码爬取普通的浏览器图片

// 获取图片
let add = $('p img')
let att =[]
for ( let i=0;i<add.length;i++){
let imgPath = add.eq(i).attr("src")
att.push(imgPath)
}

  在页面上显示(访问自己定的接口)

app.listen(3000, () => {//启动一个3000端口的server服务
console.log('Listening on port 3000')
})

  打开localhost:3000查看效果

node爬虫(简版)

样式我这里没有调,只加了两个语义化标签。给上段完整代码吧

const request = require('request-promise')
const cheerio = require('cheerio')
let express = require('express')
let app = express()
const URI = 'https://mp.weixin.qq.com/s/MWvlJHu7ptHQMLBpA0u9oA'app.get('/', async (req, res) => {
// 把网址转换成页面格式
let result = await request(URI)
$ = cheerio.load(result)
// 获取表头文本
let name = $('#activity-name').text()
name = name.replace(/\ +/g,"")
name = name.replace(/[\r\n]/g,"");
name = `<h1>${name}</h1>`
// 获取内容文本
let test = $('#js_content').text()
test = test.replace(/[\r\n]/g,"");
test = `<p>${test}</p>`
// 获取图片
let add = $('p img')
let att =[]
for ( let i=0;i<add.length;i++){
let imgPath = add.eq(i).attr("data-src")
imgPath = imgPath.split('?')[0]
att.push(imgPath)
}
let img =att.map(el => {
let a = `<img src='${el}'>`
console.log(a)
return a
})
// let data = []
// data.push(name,test,att)
let data = ''
data = name + test + img
res.send(data)
})app.listen(3000, () => {//启动一个3000端口的server服务
console.log('Listening on port 3000')
})

  接下来说下获取图片的特殊情况,那就是获取微信公众号文章图片的时候

当你把微信公众号地址转换成代码的时候,他图片转化出来的是一个方法,导致你把页面加载完了,但是图片没有加载出来。(根本就没有src)

node爬虫(简版)

我们应该获取的事这个img的src但是他调取页面转换成代码的时候,这个加载图片的事件没有走完,导致src事underfunded

node爬虫(简版)

有谁能解决这个问题吗?帮忙解答一下,困扰我好长时间了!!!!

相关推荐
python开发_常用的python模块及安装方法
adodb:我们领导推荐的数据库连接组件bsddb3:BerkeleyDB的连接组件Cheetah-1.0:我比较喜欢这个版本的cheeta…
日期:2022-11-24 点赞:878 阅读:8,993
Educational Codeforces Round 11 C. Hard Process 二分
C. Hard Process题目连接:http://www.codeforces.com/contest/660/problem/CDes…
日期:2022-11-24 点赞:807 阅读:5,507
下载Ubuntn 17.04 内核源代码
zengkefu@server1:/usr/src$ uname -aLinux server1 4.10.0-19-generic #21…
日期:2022-11-24 点赞:569 阅读:6,350
可用Active Desktop Calendar V7.86 注册码序列号
可用Active Desktop Calendar V7.86 注册码序列号Name: www.greendown.cn Code: &nb…
日期:2022-11-24 点赞:733 阅读:6,135
Android调用系统相机、自定义相机、处理大图片
Android调用系统相机和自定义相机实例本博文主要是介绍了android上使用相机进行拍照并显示的两种方式,并且由于涉及到要把拍到的照片显…
日期:2022-11-24 点赞:512 阅读:7,768
Struts的使用
一、Struts2的获取  Struts的官方网站为:http://struts.apache.org/  下载完Struts2的jar包,…
日期:2022-11-24 点赞:671 阅读:4,845