ajax抓取网页内容(ajax都搜不到我们的页面你以为你尽力了吗)
优采云 发布时间: 2021-12-18 04:04ajax抓取网页内容(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('/').pop();<br /> $.get('api/' + linkSplit, function(data) {<br /> $('#content').html(data);<br /> });<br />}<br />
然后定义鼠标的点击事件。
1<br />2<br />3<br />4<br />5<br />
$('#container').on('click', 'a', function(e) {<br /> window.history.pushState(null, null, $(this).attr('href'));<br /> anchorClick($(this).attr('href'));<br /> e.preventDefault();<br />});<br />
还要考虑用户单击浏览器的“前进/后退”按钮。这时候会触发History对象的popstate事件。
1<br />2<br />3<br />
window.addEventListener('popstate', 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拼出来写进地址栏,这样搜索引擎当然可以抓取页面的内容。