我今天正在读这篇文章.说实话,我真的很喜欢"2.你的大部分内容是由服务器端技术(如PHP或ASP.NET)创建的".
如果我明白了,我想要明白:)
我创建了php脚本(gethtmlsnapshot.php),其中我包含服务器端的ajax页面(getdata.php)和我转义(为了安全)参数.然后我在html静态页面的末尾添加它(index-movies.html).对?现在...
1 - 我把gethtmlsnapshot.php放在哪里?换句话说,我需要调用(或更好地,爬虫需要)该页面.但是如果我在主页面上没有链接,则爬虫无法调用它:O爬虫如何使用_escaped_fragment_参数调用该页面?如果我不在某处特定的话,它无法知道它们:)
2 - 船员如何使用参数调用该页面?和以前一样,我需要使用参数链接到该脚本,因此,工作人员浏览每个页面并保存dinamic结果的内容.
你能帮助我吗?你怎么看待这种技术?如果爬虫的开发者以其他方式做自己的机器人,那会不会更好?:)
让我知道你的想法.干杯
我认为你出了点问题所以我会试着解释一下这里发生了什么,包括背景和替代方案.因为这确实是一个非常重要的话题,我们大多数人偶尔偶然发现(或至少是类似的东西).
使用AJAX或者说异步增量页面更新(因为大多数页面实际上不使用XML而是JSON),丰富了Web并提供了出色的用户体验.
然而它也付出了代价.
主要问题是客户端根本不支持xmlhttpget对象或JavaScript.在开始时,您必须提供向后兼容性.这通常通过提供链接并捕获onclick事件并触发AJAX调用而不是重新加载页面(如果客户端支持它)来完成.
今天几乎每个客户都支持必要的功能.
所以今天的问题是搜索引擎.因为他们没有.嗯,这不完全正确,因为他们部分(尤其是谷歌),但出于其他目的.Google评估某些JavaScript代码以防止Blackhat SEO(例如指向某个地方的链接,但使用JavaScript打开一些完全不同的网页...或者客户端看不到的html关键字代码,因为它们被JavaScript删除或反之亦然).
但要保持简单,最好考虑一个没有CSS或JS支持的非常基本的浏览器的搜索引擎爬虫(它与CSS相同,其特殊原因解析了它的一方).
因此,如果您的网站上有"AJAX链接",并且Webcrawler不支持使用JavaScript跟踪它们,那么它们就不会被抓取.或者他们呢?那么答案就是JavaScript链接(比如document.location).谷歌通常足够聪明地猜测目标.但是没有制作ajax电话.这很简单,因为它们返回部分内容,并且由于上下文未知而且唯一URI不代表内容的位置,因此无法从中构造有意义的整页.
所以基本上有3种策略可以解决这个问题.
在具有正常href属性的链接上有一个onclick事件作为后备(imo是最好的选项,因为它解决了客户端和搜索引擎的问题)
通过您的站点地图提交内容网站,以便它们被编入索引,但完全与您的站点链接分开(通常页面提供这个URL的固定链接,以便外部页面链接它们以用于pagerank)
ajax爬行方案
我们的想法是让您的JavaScript xmlhttpget请求与相应的href属性纠缠在一起,如下所示:
www.example.com/ajax.php#!key=value
所以链接看起来像:
go to my imprint
该函数handleajax
可以评估该document.location
变量以触发增量异步页面更新.它也可以通过id或url或其他任何东西.
然而,爬虫会识别ajax爬行方案格式并自动提取,http://www.example.com/ajax.php.php?%23!page=imprint
而不是http://www.example.com/ajax.php#!page=imprint
查询字符串,然后使用html片段来描述哪些部分内容已更新.所以你必须确保http://www.example.com/ajax.php.php?%23!page=imprint返回一个完整的网站,看起来网站应该在xmlhttpget更新后向用户查找已经成了.
一个非常优雅的解决方案也是将一个对象本身传递给处理函数,然后处理函数获取与爬虫使用ajax但使用其他参数获取的相同的URL.然后,您的服务器端脚本决定是传递整个页面还是仅传递部分内容.
这确实是一种非常有创意的方法,这是我的个人意见分析:
亲们:
部分更新页面接收唯一标识符,此时它们是语义Web中的完全限定资源
部分更新的网站接收可由搜索引擎呈现的唯一标识符
CON:
它只是搜索引擎的后备解决方案,而不是没有JavaScript的客户端
它为黑帽SEO提供了机会.因此,谷歌肯定不会完全采用它,或者通过对内容进行适当的验证来对这种技术进行高排名.
结论:
只是常规链接与后备遗留工作href属性,但onclick处理程序是一种更好的方法,因为它们为旧浏览器提供功能.
ajax爬行方案的主要优点是部分更新的网站获得了唯一的URI,您不必创建以某种方式充当可索引和可链接对应的重复内容.
你可以说ajax爬行方案实现更一致,更容易实现.我认为这是您的应用程序设计的问题.