教你三步爬取掘金优质前端文章
2019-05-28 19:39
1301 查看
前言
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 模块发送请求,注意请求头的设置和POST请求体数据(请求参数) superagent.post('https://web-api.juejin.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() superagent.post('https://web-api.juejin.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案例文件夹下查找。
相关文章推荐
- 掘金翻译计划,翻译掘金上优质的英文文章
- Web前端开发人员和设计师必读文章推荐(转载)
- 前端沉淀-每周阅读文章
- Web前端开发人员和设计师必读文章【系列十一】
- 【优质资源】掘金翻译计划
- Web前端开发人员和设计师必读文章【系列十一】
- 2017下半年掘金日报优质文章合集:前端篇
- Web前端开发人员和设计师必读文章推荐【系列七】
- 者网盘下载速度慢?MAC下三步操作轻松绕开百度网盘限速,实现高速下载?文章为转发
- 我的架构经验系列文章 - 前端架构
- Web 前端开发精华文章推荐(jQuery、HTML5、CSS3)【系列十三】
- 前端工程师和设计师必读文章推荐【系列三十五】
- 前端学习博客和文章存档
- Web前端开发人员和设计师必读文章推荐【系列三】
- Web前端开发人员和设计师必读文章推荐【系列九】
- 【前端技术文章阅读】--201608
- 分享我收集的前端好资源:网址、文章、工具、框架、电子书
- 技术文章 | 前端开发中的柯里化
- Web前端开发人员和设计师必读文章推荐【系列八】
- 收藏优质文章比较多的博客