我们公司现有门户网站是采用的 vue.js+java,在部署的时候通过将 vue 项目打包出静态文件( npm run build ),放到 nginx 中然后通过 nginx 访问页面。虽然可行,但碰到了一个致命的问题seo 优化,这样打包出来的 html 页面都是利用 js 获取页面,导致百度爬虫什么也爬不出来。
在网上看了很多案例,尝试了很多方法但是效果都不太理想: 1.利用 nuxt.js 改造现有项目,但是项目已经成型,花费成本太高 2.预渲染 prerender-spa-plugin,这种方法我们也有尝试,但是发现对服务器资源消耗过大 3.淘宝的 node 中间层处理方案,将 html,js.css 放到 node 容器中,好像对我们现有项目也帮助不大。
今天突然有了个想法,我可不可以直接在服务器端 npm run dev 运行开发环境,通过 nginx 直接转发到这个端口,不打包,直接运行项目,这样爬虫是否可以爬取到内容?
![]() | 1 poisedflw 2020-05-25 12:03:13 +08:00 要想 SEO,就老老实实的用 SSR 吧,用官方推荐的 vue-server-renderer,成本并不大。 |
2 crazybinggan 2020-05-25 12:07:01 +08:00 说说我的方法,专门针对爬虫搞一套,样式、JS 都不用,就是路由管理比较蛋疼,好处是真特么方便、爽~ |
![]() | 3 seki 2020-05-25 12:08:00 +08:00 不能 seo 的问题是这些内容都是 js 加载之后渲染在页面里面的,而爬虫没有办法从 html 读到 用 dev server 也是一样的 |
![]() | 4 ArtIsPatrick 2020-05-25 13:02:25 +08:00 via iPhone 既然是门户网站设计之初就应该考虑到 SEO 的问题呀 |
![]() | 5 HarryQu 2020-05-25 13:16:37 +08:00 @crazybinggan 你的方案可行吗? 我之前查询了这个方案,有的人说:爬虫会伪装成正常 ip 来爬取数据,如果获取内容不一致,会被判断为作弊。 prerender-spa-plugin 消耗资源大,可以尝试在本地构建,构建成功后,上传到服务器。不过我之前采用 prerender-spa-plugin,发现百度并不理睬我的博客,Google 倒是收录了,可能博客太烂了,嘿嘿。 |
8 tddxx OP @ArtIsPatrick 为了方便就采用了 vue |
![]() | 9 seki 2020-05-25 14:43:31 +08:00 是的,不如你就改到 nuxt 吧,把 ajax 请求从原来的地方挪动到 nuxt 的专门 api 就行。用 nuxt 甚至可以把网站做成静态的 |
![]() | 10 red2dog 2020-05-25 14:51:20 +08:00 成本高吗,vue 转 nuxt 改造,还有 react 转 next 改造我都做过。不是只需要改请求层和路由层吗。 问题是你们既然需要 seo,那为什么最初的技术选型搞成客户端渲染呢。 |
![]() | 11 red2dog 2020-05-25 14:53:32 +08:00 在我看来,成本高只有客户端渲染转 pug 或者 EJS 这样的改造。 |
12 crazybinggan 2020-05-25 14:59:59 +08:00 @HarryQu 你这么问还真没关注过...这边也只是简单针对特定搜索引擎爬虫 agent 去分流 |