ajax抓取网页内容(ajax都搜不到我们的页面你以为你尽力了吗)

优采云 发布时间: 2021-12-18 04:04

  ajax抓取网页内容(ajax都搜不到我们的页面你以为你尽力了吗)

  说到Ajax的缺点,很多人会认为不利于SEO的一面。大搜索时代,搜索引擎找不到我们的页面,你肯定会有淡淡的忧伤。你认为你尽力了,显然没有,那我们该怎么办?

  一、先回顾一下ajax的一些不足,

  ①破坏浏览器的后退按钮,使其无法运行;

  ②对搜索引擎不友好;

  ③不支持跨域请求;

  ④ ajax脚本语言嵌入在HTML页面中,可以通过查看源代码或firebug等工具直接查看,不利于项目代码的保密。

  第二个提到了,对搜索引擎不友好。这意味着什么?这么说吧,越来越多的网站开始采用“单页结构”。整个网站只有一个网页,使用ajax技术根据用户输入加载不同的内容。

  这种方式的优点是用户体验好,节省流量。缺点是ajax内容无法被搜索引擎抓取。因为搜索引擎会爬取整个页面的内容,这样统计数据才能达到搜索的目的,而且Ajax请求的文件在用户操作之前放在服务器上,无论搜索引擎有多强大,信息或无法搜索资源。.

  因此,缺点是显而易见的。之前也想过这个问题,但是没有很好的解决办法。直到看到这个文章,忍不住拍案叫绝,分享出来供大家参考:

  how_to_make_search_engines_find_ajax_content

  二、如何解决

  1. 将hashtag结构替换为History API,让每个hashtag变成正常路径的URL,这样搜索引擎就会抓取每一个网页。

  1<br />2<br />3<br />

  example.com/1<br />example.com/2<br />example.com/3<br />

  2.定义一个 JavaScript 函数来处理 Ajax 部分并根据 URL 抓取内容(假设使用 jQuery)。

  1<br />2<br />3<br />4<br />5<br />6<br />

  function anchorClick(link) {<br />  var linkSplit = link.split(&#39;/&#39;).pop();<br />  $.get(&#39;api/&#39; + linkSplit, function(data) {<br />    $(&#39;#content&#39;).html(data);<br />  });<br />}<br />

  然后定义鼠标的点击事件。

  1<br />2<br />3<br />4<br />5<br />

  $(&#39;#container&#39;).on(&#39;click&#39;, &#39;a&#39;, function(e) {<br />  window.history.pushState(null, null, $(this).attr(&#39;href&#39;));<br />  anchorClick($(this).attr(&#39;href&#39;));<br />  e.preventDefault();<br />});<br />

  还要考虑用户单击浏览器的“前进/后退”按钮。这时候会触发History对象的popstate事件。

  1<br />2<br />3<br />

  window.addEventListener(&#39;popstate&#39;, function(e) {<br />  anchorClick(location.pathname);<br />});<br />

  定义以上三段代码后,无需刷新页面即可显示正常路径URL和AJAX内容。

  3.设置服务器端。

  因为没有使用 hashtag 结构,所以每个 URL 都是不同的请求。因此,服务器需要向所有这些请求返回具有以下结构的网页,以防止 404 错误。

  1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br />

  <br />  <br />    <br />      <br />        ... ...<br />      <br />    <br /><br />

  总之,意思很明确。就是用js把url拼出来写进地址栏,这样搜索引擎当然可以抓取页面的内容。

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线