网站首页 > 开源技术 正文
教你三步爬取前端优质文章
前言
hello,小伙伴们,我是你们的pubdreamcc,本篇博文出至于我的GitHub仓库node学习教程资料,欢迎小伙伴们点赞和star,你们的点赞是我持续更新的动力。
GitHub仓库地址:node学习教程
好了,废话不多说,今天我们来玩一个有意思的 demo :
Node实现爬虫抓取点赞大于 50 的优质前端文章
先来看以下效果:
服务器会每10分钟更新相关内容,好了,开始今天的练习了~
用到的技术
- express
- superagent(服务端发送请求模块)
- art-template
- 官方API
第一步
找接口
先来看看首页获取前端文章的后端接口 API 在哪里。
打开官网,(F12) 打开开发者模式查看network 选项,咱们可以看到获取文章接口的api如下:
打开开发者模式,我们很轻松的找到获取文章的接口,这就好办了,说实话前端开发,只要有了接口,那就等于有了一切,我们可以尽情的 coding 了~
第二步
创建服务器文件 app.js ,通过superagent 模块发送请求获取文章数据。
app.js 是我们服务端代码,这里通过服务端发送请求获取爬虫所要的数据保存下来。
// 定义一个函数,用来获取首页前端文章信息
function getInfo () {
// 利用superagent 模块发送请求,获取前20篇文章。注意请求头的设置和POST请求体数据(请求参数)
superagent.post('https://web-api..im/query').send(params).set('X-Agent', 'Juejin/Web').end((err, res) => {
if (err) {
return console.log(err)
}
// 保存所有文章信息
const array1 = JSON.parse(res.text).data.articleFeed.items.edges
const num = JSON.parse(res.text).data.articleFeed.items.pageInfo.endCursor
// 筛选出点赞数大于 50 的文章
result = array1.filter(item => {
return item.node.likeCount > 50
})
params.variables.after = num.toString()
// 再次发送请求获取另外的20篇文章
superagent.post('https://web-api..im/query').send(params).set('X-Agent', 'Juejin/Web').end((err, res) => {
if (err) {
return console.log(err)
}
const array2 = JSON.parse(res.text).data.articleFeed.items.edges
const result2 = array2.filter(item => {
return item.node.likeCount > 50
})
result2.forEach(item => {
result.push(item)
})
})
})
}
// 调用一次获取数据
getInfo()
// 设置定时器,规定10分钟更新一此数据
setInterval(() => {
getInfo()
}, 10*1000*60)
复制代码
这里要注意接口那边需要设置请求头的 X-Agent 属性,一定要在 superagent 发送 post 请求时候带上,否则会出错,另外就是固定的请求参数 params,这个可以仿照官网来写。
第三步
模板引擎渲染数据,发送结果到浏览器渲染
这一步需要借助模板引擎渲染 HTML 页面,把从第二步拿到的结果渲染到页面中,最终返回给浏览器渲染。
app.js 代码:
// 监听路由
app.get('/', (req, res, next) => {
res.render('index.html', {
result
})
})
// 绑定端口,启动服务
app.listen(3000, () => {
console.log('running...')
})
复制代码
模板 index.html 代码 :
<!-- 借助bootstrap样式,注意模板语法的使用 -->
<ul class="list-group">
{{each result}}
<li class="list-group-item">
<a href="{{$value.node.originalUrl}}" target="_blank">{{$value.node.title}}</a>
<img data-v-7bf5f1fe="" src="https://b-gold-cdn.xitu.io/v3/static/img/zan.e9d7698.svg">
<span>{{$value.node.likeCount}}</span>
</li>
{{/each}}
</ul>
复制代码
写在后面
如果你需要项目的源码可以在GitHub对应仓库的 node学习demo案例 文件夹下查找, 谢谢!
猜你喜欢
- 2024-10-21 霸榜掘金!轻量级请求策略库 alova 出炉!
- 2024-10-21 对于现代 Web 应用除了美观要求之外,对产品体验度要求高
- 2024-10-21 5 个顶级的 JavaScript Ajax 组件和库
- 2024-10-21 用 async 模块控制并发数(async await并发)
- 2024-10-21 package-lock.json的作用?(package lock.json)
- 2024-10-21 为什么 JS 开发者更喜欢 Axios 而不是 Fetch?
- 2024-10-21 Node.js爬虫实战 - 爬你喜欢的(node爬取数据)
- 2024-10-21 node.js爬虫-校园网模拟登录(校园网模拟登陆)
- 2024-10-21 IMT星际云每周资讯-20190111(星际云官网)
- 2024-10-21 nodejs,express,koa爬虫实战(node网络爬虫)
欢迎 你 发表评论:
- 11-07qq邮箱网页版登录官网电脑版
- 11-07查看wifi密码(电脑查看wifi密码)
- 11-07怎么申请163邮箱(怎样申请邮箱个人免费注册)
- 11-07windows 10官方版镜像下载(w10镜像官网下载)
- 11-07电脑网卡坏了怎么修复(电脑网卡坏了维修多少钱)
- 11-07怎么卸载ie浏览器 win7(怎么卸载ie浏览器里的flash)
- 11-072t硬盘一千多个坏道还能用吗
- 11-07惠普牌子的电脑好不好(惠普品牌电脑)
- 1596℃北京那些看上去很牛的车牌们!(北京厉害车牌)
- 1114℃2025年度视频去水印软件TOP5对比:哪款最值得用
- 600℃新疆话里的“虫子”
- 528℃中兴光猫 Telnet下设置大全(中兴光猫命令大全)
- 520℃蓝牙设备配对失败的系统性解决方案与技术解析
- 518℃未备份电脑文件数据恢复的七种方法
- 498℃工艺管道常用英文缩写 英汉对照
- 453℃是爱情啊!比伯分享度假照 与海莉礁石上甜蜜接吻
- 最近发表
- 标签列表
-
- jdk (81)
- putty (66)
- rufus (78)
- 内网穿透 (89)
- okhttp (70)
- powertoys (74)
- windowsterminal (81)
- netcat (65)
- ghostscript (65)
- veracrypt (65)
- asp.netcore (70)
- wrk (67)
- aspose.words (80)
- itk (80)
- ajaxfileupload.js (66)
- sqlhelper (67)
- express.js (67)
- phpmailer (67)
- xjar (70)
- redisclient (78)
- wakeonlan (66)
- tinygo (85)
- startbbs (72)
- webftp (82)
- vsvim (79)

本文暂时没有评论,来添加一个吧(●'◡'●)