NodeJS在SEO中的应用:快速采集分析页面
一、安装
网上有很多的教程,下载到https://nodejs.org,在Win系统下运行就可以搭上一个环境。下载Windows的Installer版本,双击安装,就成功了。
然后配置神器Sublime开始使用。
为Sublime添加实时调试运行,打开Sublime-》Tools-》Build System-》New Build System
在新打开的文件中写入下面的代码
然后保存为NodeJS.sublime-build.
新建一个采集.js文件,设为NodeJS进行运行调试。
二、注意
在nodejs里面需要require(库名)的方式来引用一些外部的库,这些外部的库安装NodeJS的时候,已经放在C盘的programfiles下面了。但是直接require是无效的。
因为NodeJS提倡的是自己的代码用自己的库,所以还需要把库复制到采集.js这个文件下面。
引用的时候可以通过npm link 库名的方式,来把系统C盘的库引用到我们的项目下面。
三、直接使用了
注意require的库必须使用npm link 库名克隆到本地,或者自己下载包放到采集.js下面的node_modules目录下面,如果 没有这个目录,自己创建。
其中:
使用Cheerio要取页面的H1标题就简单了
var title=$(‘#article_details h1 a’).text().trim()//读取Div下面的H1标签文本。
有没有jQuery强到爆的感觉。想分析页面什么的,还用正则吗?不用了。还用分析吗?不用了。找个大的Div,直接就读出来了。C#当然也可以用Htmp Agility pack来解析Dom。
但是为此我要新建一个项目,运行,调试,用NodeJS的话,在Sublime里面按Ctrl+B直接运行,可以马上看到效果。而且可以放到服务端。放到我的服务器上去。诸多好处也不大好形容。如果会点JS代码的话,上手应该非常快。
文章阅读,来自 前端之巅 去哪儿网 部分摘录
1.项目分离,页面分离
第一种是项目分离,承载页面分离。他的特点是简单,快速,前端只关注浏览器方面,除浏览器端之外都是后端负责。
缺点 :
沟通成本高,前期,前端需要使用 ng 或者代理工具调试,后期,还要把页面给到后端,并且新建一个对应的路由。
2.项目分离,只是后端的页面,放到了前端项目里
后端只需要配置路由,最终上线时,由发布系统负责把前端中的页面,自动同步到后端相应的目录中。其中相应的目录需要前后端提前约定,不然后端在渲染页面的时候,就会找不到相应的文件。相比第一种方案,稍微有点进步。沟通成本会有一定的降低。
缺点 :
不过如果需要在页面里做一些业务逻辑处理,还需要前端同学掌握和学习 velocity 语法,对于新同学而言看似掌握的了一门新语法,但实际操作起来并非想象中的流畅。
3.第三种方案是使用 Nodejs 作为页面渲染层,后端只负责数据的生产工作
这也是目前阶段主要的使用方式。它的优点是前端同学对于整个页面的生命周期有完全的控制权,包括开发,调试,部署,上线以及后期的性能监控,应用监控等等。可做的事情也更多,比如使用 React SSR 做同构渲染。
缺点 :
对于前端同学的要求也会很高,除学习前端知识外,还要学习后端知识。
整个应用都是由前端统一负责,所以还需要接收报警电话或者短信,7*24 小时,都在待命状态。
1.一些前端开发,只关注浏览器端,服务器端开发关注很少,或者根本就不关注
2.认为 Node.js 只适合开发一些工具类的功能,相对于后端开发来看它只是个玩具
3.Node.js 的生态不如其他后端语言生态健全
4.涉及到后端开发的知识面比较广,在没有这些基础知识或者经验积累的基础上,考虑问题比较片面,最终做出的系统问题比较多,容易被后端鄙视
看似问题很多,但实质上只有两个原因,
1,自身知识储备不够。
2,对 Node.js 了解不深,不敢应用在生成环境中,即使应用到生产环境,一旦出现问题,不能快速及时的处理,导致高层认为还不如其他后端语言稳定,降低了我们的话语权。 (很中肯,不摸底,不敢用于项目)
1,提高开发效率,因为有了 Node 之后就不需要配置 Nginx 了,也不需要配置一些代理工具了,所有的页面生命周期都是由前端统一去管理的,这时候不需要其他人进行合作。
2,降低沟通成本,除了接口格式外,不需要和后端进行交互了;
3,前后端职责也更为清晰,因为这时候,界限更为清晰了,后端只负责生产数据,它只提供数据就可以了,至于数据怎么消费,以及怎么用,都由前端去做;
4,可以同时使用 React SSR 技术,做到首屏渲染,提高用户体验,除了首屏之外,还可以做异步的加载、SEO 等操作。
5,Node.js 可提供一些服务,不仅能让我们使用,还可以对外使用,如 RESTful API,这样就不用有求于后端了。
/---------------------------------------------文章摘录结束-------------------------------------------------/
除了号称nodejs界jQuery的express,
另外两个比较不错的
一个是 360 团队的 Thinkjs ,
一个是阿里的 Eggjs
2019-04-16-09:22 于公司假如面试官问你:前后端分离项目如何做seo?
1、使用prerender,如果说不用prerender,你怎么回答呢?
2、先去 www.baidu.com/robots.txt 找出常见的爬虫,然后在 ngnix 服务器上判断访问者的 User Agent (划重点)是否是爬虫。
如果是:用 ngnix 反向代理到我们自己用 nodejs + puppeteer 实现的爬虫服务器。
知识点:
puppeteer :谷歌推出,可以理解为无界面版本的 chrome 浏览器,通俗说就是可以在服务端使用浏览器(页面不展示而已)。
实际上是通过调用Chrome DevTools开放的接口与Chrome通信,Chrome DevTools的接口很复杂,但puppeteer对其进行了封装,我们调用起来还是很方便的。
欢迎分享,转载请注明来源:夏雨云
评论列表(0条)