网页抓取工具如何处理javascript

时间:2009-11-23 18:35:04

标签: javascript web-crawler

今天,Internet上的很多内容都是使用JavaScript(特别是后台AJAX调用)生成的。我想知道像Google这样的网络抓取工具如何处理它们。他们是否了解JavaScript?他们有内置的JavaScript引擎吗?或者他们是否简单地忽略了页面中所有JavaScript生成的内容(我猜不太可能)。人们是否使用特定的技术来获取索引的内容,否则这些内容可以通过后台AJAX请求提供给普通的互联网用户?

6 个答案:

答案 0 :(得分:14)

JavaScript由Bing和Google抓取工具处理。 Yahoo使用Bing抓取工具数据,因此也应该进行处理。我没有关注其他搜索引擎,所以如果你关心它们,你应该查看它们。

Bing published guidance in March 2014关于如何创建与其爬虫一起使用的基于JavaScript的网站(主要与pushState相关),这些网站通常都是良好做法:

Google later published guidance in May 2014关于如何创建与其抓取工具一起使用的基于JavaScript的网站,还建议他们推荐:

  • 请勿阻止robots.txt文件中的JavaScript(和CSS)。
  • 确保您可以处理抓取工具的负载。
  • 支持无法处理的浏览器和抓取工具(或不允许使用JavaScript的用户和组织)
  • 依赖于该语言的神秘或特定功能的棘手JavaScript可能无法与抓取工具一起使用。
  • 如果您的JavaScript从页面中删除了内容,则可能无法编入索引。 周围。

答案 1 :(得分:6)

他们中的大多数都没有以任何方式处理Javascript。 (至少,所有主要搜索引擎的抓取工具都没有。)

这就是为什么让您的网站在没有Javascript的情况下优雅地处理导航仍然很重要。

答案 2 :(得分:3)

我已经通过在我的网站上放置页面只能通过Javascript访问,然后观察它们在搜索索引中的存在来测试这一点。

我的网站上只能通过Javascript访问的网页随后被Google编入索引。

通过Javascript使用“经典”技术或构建URL并相应地设置window.location来达到内容。

答案 3 :(得分:2)

正是Ben S所说的。任何使用Lynx访问您网站的人都不会执行JavaScript。如果您的网站仅供一般公众使用,则通常无需JavaScript即可使用。

此外,相关:如果您希望搜索引擎找到的页面,以及通常仅来自JavaScript的页面,您可以考虑生成它们的静态版本,可通过可爬网站点地图访问,这些静态页面当启用JavaScript的浏览器命中时,使用JavaScript加载当前版本(如果有人使用浏览器跟随您的站点地图)。搜索引擎将看到页面的静态形式,并可以将其编入索引。

答案 4 :(得分:1)

Crawlers不会解析Javascript以找出它的作用。

它们可能是为了识别onchange="window.location.href=this.options[this.selectedIndex].value;"onclick="window.location.href='blah.html';"等一些经典片段而构建的,但它们并不会像使用AJAX获取的内容那样烦恼。至少还没有,并且像这样取得的内容无论如何总是次要的。

因此,Javascript只应用于其他功能。您希望抓取工具找到的主要内容仍然是页面中的纯文本和抓取工具可以轻松遵循的常规链接。

答案 5 :(得分:1)

抓取工具可以处理javascript或ajax调用,如果他们使用某种框架,如'htmlunit'或'selenium'