我们公司现有门户网站是采用的 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 去分流
|