ajax抓取网页内容(CwRadioButton更改为_escaped_fragment_以及何时应使用#!)

优采云 发布时间: 2021-11-19 15:07

  ajax抓取网页内容(CwRadioButton更改为_escaped_fragment_以及何时应使用#!)

  什么时候应该使用_escaped_fragment_,什么时候应该使用#! 在 AJAX URL 中?

  您的 网站 应该使用 #! 所有使用 AJAX 爬网机制的 URL 的语法。Googlebot 不会跟踪 _escaped_fragment_ 格式的超链接。

  上提供了 AJAX 应用程序示例。单击左侧的任何链接后,您将看到相应的 URL 收录一个 #! 哈希代码片段,应用程序将进入与此哈希代码片段对应的状态。如果你改变#! (例如#!CwRadioButton)到?_escaped_fragment_=(例如),网站 将返回一个HTML 快照。

  如果您这样做,在不久的将来,您的网页可能无法在 Google 搜索结果页上正确显示。但是,我们一直在不断改进 Googlebot,并试图使其更像浏览器。届时,当您在 网站 上实现所需的功能时,Googlebot 可能会自动正确地为您的网页编入索引。但是,这种AJAX爬取机制对于已经使用AJAX并希望确保内容被正确索引的网站来说是一个非常实用的解决方案。我们希望该方案能够有效解决用户拥有网页HTML快照的问题,或者解决用户使用无头浏览器获取此类HTML快照的问题。

  这完全取决于应用程序内容的更新频率。如果更新频繁,则应始终及时构建最新的 HTML 快照以响应爬虫请求。如果不频繁,请考虑创建一个内容不定期更新的库档案。为避免服务器持续生成相同的 HTML 快照,您可以一次性创建所有相关的 HTML 快照(可能处于离线状态),然后保存以备将来参考。您还可以使用 304(未修改)HTTP 状态代码响应 Googlebot。

  我们建议您使用它!使用哈希码段可以显着加快应用响应速度,因为哈希码段是由客户端浏览器处理的,不会导致整个网页都需要刷新。此外,哈希码片段还支持在应用程序中提供历史记录(也称为备受诟病的“浏览器后退按钮”)。各种 AJAX 框架都支持哈希代码段。例如,查看Really Simple History、jQuery 的历史插件、Google Web Toolkit 的历史机制或ASP.NET AJAX 对历史管理的支持。

  但是,如果您无法构建应用以使用哈希代码片段,则可以执行以下操作以在哈希代码片段中使用特殊标记(即 URL 中 # 标记之后的所有内容)。表示唯一页面状态的哈希代码段必须以感叹号开头。例如,如果您的 AJAX 应用程序收录类似于以下内容的 URL:

  www.example.com/ajax.html#mystate

  现在应该是这样的:

  www.example.com/ajax.html#!mystate

  如果你的网站采用这种架构,就会被认为是“AJAX可抓取”。这意味着如果您的 网站 提供了 HTML 快照,爬虫将看到您的应用程序的内容。

  URL 的 _escaped_fragment_ 语法对应于临时 URL,最终用户不应看到。在用户可以看到的所有环境中,您应该使用“漂亮的 URL”(使用 #! 而不是 _escaped_fragment_):常规应用程序交互、站点地图、超链接、重定向以及用户可能会看到 URL 的任何其他情况。出于同样的原因,搜索结果都是“漂亮的网址”,而不是“难看的网址”。

  隐藏真实内容是指提供给用户的内容与提供给搜索引擎的内容不同,通常是为了提高网页在搜索结果中的排名。隐藏真实内容一直是​​(也将永远是)一个重要的搜索引擎问题,所以需要注意的是,将AJAX应用设置为可爬取,绝不是为了隐藏真实内容的方便。因此,HTML 快照必须收录与最终用户在浏览器中看到的内容相同的内容。如果它们不相同,则可能被视为隐藏了真实内容。详情请参考具体回答。

  Google 确实可以为许多富媒体文件类型编制索引,并且一直在努力改进抓取和索引编制。但是,Googlebot 可能无法看到 Flash 或其他富媒体应用程序的所有内容(就像它无法抓取您网站 上的所有动态内容一样),因此使用此机制可以为 Googlebot 提供更多内容。, HTML 快照必须收录与最终用户在浏览器中看到的内容相同的内容。Google 保留将 网站 从被视为隐藏真实内容的索引中排除的权利。

  如果你的 网站 使用 AJAX 爬取机制,谷歌爬虫会爬取它遇到的每一个哈希码段 URL。如果您不想抓取某些哈希代码段 URL,建议您在 robots.txt 文件中添加正则表达式指令。例如,您可以在不想被抓取的哈希代码片段中使用约定,然后在 robots.txt 文件中排除所有符合该约定的 URL。假设所有指示不可索引的语句都采用以下形式:#DONOTCRAWLmyfragment,那么您可以将以下代码添加到 robots.txt 以防止 Googlebot 抓取这些页面:

  Disallow: /*_escaped_fragment_=DONOTCRAWL

  如何处理现有的#! 在哈希码段?

  #!是在现有哈希代码片段中不常用的令牌;但是,URL 规范并没有规定不能使用。如果您的应用程序使用了#!,但又不想采用新的 AJAX 爬取机制,您应该怎么做?一种方法是在robots.txt中添加以下指令来指示爬虫做什么。

  Disallow: /*_escaped_fragment_

  请注意,这意味着如果您的应用程序仅收录此 URL #!mystate,则不会抓取该 URL。如果您的应用程序还收录一个普通 URL,则该 URL 将被抓取。

  当前向搜索引擎提供静态内容的方法有一个副作用,即 网站 站长可以让残障用户更容易访问他们的应用程序。这项新协议进一步提高了可访问性:网站 网站管理员不再需要手动干预来使用收录所有相关内容且可供屏幕阅读器使用的无头浏览器来创建 HTML 快照。这意味着现在可以更轻松地提供最新的静态内容,而手动工作越来越少。换句话说,网站 网站管理员现在将有更大的动力来构建方便残障用户使用的应用程序。rel="canonical" 应该如何使用?

  请使用(不要使用)。

  您应该在站点地图的搜索结果中添加要显示的 URL,因此应该添加 #!foo=123。带有 #! 影响产品饲料?

  对于 网站,他们通常希望在 Google Shopping 和网络搜索中显示相同的 URL。通常,带有 #! 应该被视为可以在任何环境中使用的“规范”版本,并且 _escaped_fragment_ URL 应该被视为最终用户永远不会看到的临时 URL。我使用 HtmlUnit 作为无头浏览器,但它不起作用。这是为什么?

  如果“不起作用”意味着 HtmlUnit 没有返回您想要查看的快照,很可能是因为您没有给它足够的时间来执行 JavaScript 和/或 XHR 请求。要解决此问题,请尝试以下任一或所有方法:

  这在大多数情况下可以解决问题。但如果问题仍然存在,您还可以查看有关 HtmlUnit 的常见问题解答:。HtmlUnit 还提供了一个用户论坛。

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线