很多网页使用了Ajax 技术,针对这种网页,我们需在八爪鱼中进行Ajax设置。
一、什么是Ajax?
Ajax (Asynchronous JavaScript and XML) :异步JavaScript 和XML。
Ajax是一种在无需重新加载整个网页的情况下,更新部分网页的技术。 通过在后台与服务器进行少量数据交换,Ajax 可以使网页实现异步更新。传统的网页(不使用 Ajax)如果需要更新内容,必须重新加载整个网页页面。
二、如何判断网页是否使用了Ajax技术
Ajax网页有2个明显特征:点击后【不重新加载整个网页】,且【网页局部出现新数据】。【不重新加载整个网页】是指:点击后观察网页的标签位置,不会转圈。如下图所示,百度地图搜索关键词‘火锅’然后点击检索按钮,点击搜索后标签栏的状态没有发生变化。
不是Ajax点击:点击后整个页面重新加载(网页的标签位置开始转圈),然后开启新的标签加载数据。如下图所示:点击热门新闻的列表,然后进入到新闻详情页。
八爪鱼是通过内置Chrome浏览器访问网页采集数据的。在八爪鱼中,判断网页是否使用了Ajax技术的方法,与普通浏览器一致。
是Ajax点击:点击后【不重新加载整个网页】(点击后浏览器网址栏无转圈状态,保持 不变),且【网页局部出现新数据】。示例网址:https://map.baidu.com/@12688265,2566101,13z
不是Ajax点击:点击后整个页面重新加载(点击后浏览器网址栏开始转圈 ,等待一段时间后转圈停止变成 ),转圈停止后有新的数据出现。示例网址:https://weixin.sogou.com/weixin?ie=utf8&s_from=input&_sug_=n&_sug_type_=1&type=2&query=%E8%83%BD%E6%BA%90&w=01015002&oq=&ri=2&sourceid=sugg&sut=0&sst0=1699866616906&lkt=0%2C0%2C0&p=40040108
练习:判断以下网页的点击,是否是Ajax点击?(先自行判断,第4个后有答案):
① 点击百度地图【搜索】按钮 https://map.baidu.com
② 点击京东【商品评论】按钮 https://item.jd.com/100004069493.html
③ 点击京东商品评论【下一页】按钮 https://item.jd.com/100004069493.html
④ 点击搜狗微信【文章链接】 https://weixin.sogou.com
答案:1是;2是;3是;4不是。
三、怎么设置Ajax点击
1、八爪鱼自行判断网页是Ajax
判断是Ajax点击后,会自动勾选【Ajax加载数据】,并设置一定的【Ajax超时】时间。
什么是【Ajax超时】?在点击后等待的时间,超过这个时间即进行下一个步骤。
【Ajax超时】设置为几秒合适?大于【点击后新数据加载完成所需的时间】即可,请注意观察网页本身点击后新数据加载完成所需的时间。
如果八爪鱼自动设置的【Ajax超时】过短,导致采不到数据,可相应的将【Ajax超时】延长,推荐5-10秒,具体根据网页情况进行调整。
如果是Ajax点击,但是在八爪鱼中没有设置【Ajax加载数据】会怎样?
对于【点击】【翻页】等会造成页面变化的步骤,八爪鱼是通过网页是否加载完成,来决定是否进行下一个步骤的:加载完成,进行下一个步骤;没有完成,等待完成再进行下一个步骤。
非Ajax网页,点击后有网页重新加载过程过程。当加载结束后,八爪鱼知道网页加载完成了,可以进行下一个步骤了。
Ajax网页,点击后网页不重新加载,无变化,八爪鱼无法判断网页是否加载完成,就默认在点击后等待120秒。但实际上Ajax点击后,局部数据几秒内就会出现,默认等待120秒会极大的影响采集速度。
2、是Ajax网页网页,但八爪鱼没有自动判断出来
需要我们手动为相应步骤进行Ajax设置:勾选【Ajax加载数据】,并设置一定的【Ajax超时】时间。
目前自动判断的很精准,很少出现此种情况,暂无实例演示。
四、非Ajax点击的设置【Ajax超时】
有的网页不是Ajax点击,点击后重新加载,要采集的数据已经出现在页面上了,但网址栏还没有加载完成。八爪鱼会等待加载完成后才进行下一个步骤,就会拖慢采集速度。
针对这种情况,可以设置【Ajax超时】,强制停止网页加载。但需要注意,【Ajax超时】的时间,一定要略多于要采集的数据实际加载出来的时间。例如,要采集的数据实际5秒内加载出来,那将【Ajax超时】设为7秒,7秒后即使网址栏还在加载,八爪鱼也会强制停止其加载,进入下一个步骤,进而提高采集速度。