网页,的几种类型划分及方法对比方法及技巧

优采云 发布时间: 2021-06-04 22:26

  网页,的几种类型划分及方法对比方法及技巧

  1.网页类型划分 从文本数据抓取的角度,可以对网页进行划分。不同类型的网页可以使用不同的数据获取方式。如下图所示: 如果可以分析一些有效网址及相关参数的规律,就可以通过手动编写代码来模拟网址及相关参数的生成,从而得到所需的有效数据。另一种方式是使用一些脚本解释引擎[1,2],动态地使用一些脚本解释执行引擎为我们生成脚本执行结果。首先,我们必须手动确定发送ajax请求的入口函数,然后让脚本解释引擎解释并执行这个函数,向服务器发送一个异步请求,最后自动捕获ajax请求回调函数的输出结果。目前比较好的js脚本解释执行引擎有GogoleV8、MozillaSpiderMonkey和Rhino[2-4]。另一种方法是使用浏览器客户端方法[5-7]。通过浏览器的自动运行发送异步ajax请求,然后采用一定的延时机制等待返回的ajax数据。当数据到达时,可以通过调用浏览器的内核 API 来获取数据。这三种方式在一定程度上都可以实现基于ajax数据的请求,但是各有优缺点。具体对比如下表: 表1 不同方法速度通用性对比 使用脚本解释引擎直接模拟最快和最弱的Ajax请求Faster than strong。使用浏览器客户端缓慢而强大。 b) 非ajax 脚本网页的数据采集non-ajax 脚本网页通常用javascript 包裹有效数据。

  虽然不需要像分析ajax网页那样模拟ajax请求,但还是需要动态处理网页中的javascript。此类网页典型的有:口碑、评论网页、论坛网页、网上商城商品信息页、首页商品介绍页、地图导航服务网页等。对于此类网页,一般取决于有效数据包的范围。如果包很简单,比如,就是下面这种方式: document.write("valid data");然后,只需使用正则表达式来提取它。如果脚本把数据包裹得严严实实,那么要想得到有效的数据,就需要动态地解释和执行java脚本。这个过程类似于Ajax网页数据采集,还要借助脚本解释引擎和浏览器客户端。但不同的是不需要模拟发送ajax请求,也不再有等待或拦截服务器返回有效数据的过程。 c) 需要验证的网页数据采集网站有很多数据要求必须登录,如论坛、微博、邮箱、个人主页、个人博客等,采用直接下载方式,往往只能获取到请求失败的页面。这种网站网页访问机制如图2所示:如果请求中不收录合法登录信息,网站服务器会返回访问失败的提示页面。合法登录信息一般封装在一个cookie中。向网站发送请求时,需要附上登录后的cookie信息。那么如何获取收录身份信息的cookie呢?当访问者登录网站并输入用户名和密码时,网站将自动返回浏览器。

  所以,你可以通过安装一些浏览器插件直接看到这个cookie。当然,也可以通过程序自动获取。获取到 Cookie 后,需要将 Cookie 添加到 Http 请求中。如图1所示,网页分类系统一般可以分为表面数据网页(SufaceWebPage)和深层数据网页(DeepWebPage)。所谓表面数据网页,是指通过解析网页的HTML代码,可以直接获取到你想要抓取的数据。深度数据网页是指那些不能直接下载的网页。对于深度数据网页,分为ajax网页、基于脚本的网页和需要验证的网页。 Ajax网页是指在网页代码中使用ajax技术向服务器动态发送异步请求,然后动态加载数据的网页。基于脚本的网页是指数据隐藏在javascript中的网页,需要对javascript进行解析才能得到有效数据。需要验证的网页是指通过登录界面进入的网页,如微博、邮箱、社交网站等网页。 2.不同类型的网页数据采集Method 表面网页数据最容易获取,在搜索引擎中也是如此

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线