几年后,Google抓取工具可以在SPA
网站中运行JavaScript,以便为网站内容编制索引。但社交网络(如Twitter,Facebook等)则不然。
顺便说一下,我看到使用AngularJS
的{{3}}网站(版本1.x,因此没有Angular通用)。它使用路由,所有元标记都是这样的(您可以在页面源中看到其他元素):
<title>{{$meta.title}}</title>
但社交网络能够呈现它们(在Twitter和Telegram信使中测试)。
知道这有可能吗?社交网络运行JavaScript吗?
答案 0 :(得分:3)
不幸的是,社交网络仍然没有在SPA页面中运行javascript。
您可以进行简单的测试来模拟Facebook的抓取工具,并检查您链接的网站的内容。当User-Agent
与其中一个社交抓取工具(例如Facebook的facebookexternalhit/1.1
)相关联时,该网页似乎会返回另一个回复。
您可以在终端中运行以下命令自行检查:
curl -A "facebookexternalhit/1.1" <page address>
您链接的页面返回一个看起来像是在服务器端呈现的结果:
对Chrome用户代理的响应:
[...]
<meta name="description" content="{{$meta.description}}">
[...]
对Facebook Crawler用户代理的回复:
[...]
<meta name="description" content="Login4 is a beautiful Login component for your Ionic app. This template contains Intro, Walkthrough, Login and Sign up screens.">
[...]
即使Angular 1.x不支持服务器端渲染,还有另一种方法 - 使用真实浏览器渲染页面,保存HTML输出并制作一个&#34;缓存&#34;抓取工具的版本。如果HTTP服务器识别出爬虫的用户代理,它将从另一个目录中作为响应发送文件。