ajax抓取网页内容(3.3.2.8怎样抓取AJAXAJAX网站的内容?(一))
优采云 发布时间: 2022-01-05 16:31ajax抓取网页内容(3.3.2.8怎样抓取AJAXAJAX网站的内容?(一))
3.3.2.8AJAX 如何抓取AJAX网站的内容?这是一个热点问题,也是一个棘手的问题。基于Javascript技术的AJAX网站的出现改变了原有互联网内容的展示方式。过去,从浏览器的角度来看,网站要显示的内容是HTML页面文件,无论是静态网页还是服务器动态网页(例如PHP、JSP、ASP都是HTML文件之后上传到浏览器,搜索引擎或内容爬虫的网络爬虫只需要处理文本内容(HTML文档是一个文本文档),所以正则表达式在内容抓取器中广泛使用网站,但正则表达式使用 AJAX网站 内容几乎不可能实现,这与 AJAX网站 内容的显示原理有关。AJAX网站页面除了正常的HTML文档内容外,还有Javascript代码或者Javascript代码库地址可以下载。在 HTML 文件加载期间或之后(通常加载事件是 Boundary)调用 Javascript 函数或代码段,这些代码段修改 HTML 文档的 DOM 结构,而 DOM 是基于浏览器窗口中显示的 HTML 文档,并且页面内容是通过这种方式动态生成的。内容可以是计算出来的,也可以从服务器异步获取,比如使用XMLHttpRequest对象从远程服务器获取需要显示的内容。AJAX网站页面除了正常的HTML文档内容外,还有Javascript代码或者Javascript代码库地址可以下载。在 HTML 文件加载期间或之后(通常加载事件是 Boundary)调用 Javascript 函数或代码段,这些代码段修改 HTML 文档的 DOM 结构,而 DOM 是基于浏览器窗口中显示的 HTML 文档,并且页面内容是通过这种方式动态生成的。内容可以是计算出来的,也可以从服务器异步获取,比如使用XMLHttpRequest对象从远程服务器获取需要显示的内容。AJAX网站页面除了正常的HTML文档内容外,还有Javascript代码或者Javascript代码库地址可以下载。在 HTML 文件加载期间或之后(通常加载事件是 Boundary)调用 Javascript 函数或代码段,这些代码段修改 HTML 文档的 DOM 结构,而 DOM 是基于浏览器窗口中显示的 HTML 文档,并且页面内容是通过这种方式动态生成的。内容可以是计算出来的,也可以从服务器异步获取,比如使用XMLHttpRequest对象从远程服务器获取需要显示的内容。还有Javascript代码或者Javascript代码库地址可以下载。在 HTML 文件加载期间或之后(通常加载事件是 Boundary)调用 Javascript 函数或代码段,这些代码段修改 HTML 文档的 DOM 结构,而 DOM 是基于浏览器窗口中显示的 HTML 文档,并且页面内容是通过这种方式动态生成的。内容可以是计算出来的,也可以从服务器异步获取,比如使用XMLHttpRequest对象从远程服务器获取需要显示的内容。还有Javascript代码或者Javascript代码库地址可以下载。在 HTML 文件加载期间或之后(通常加载事件是 Boundary)调用 Javascript 函数或代码段,这些代码段修改 HTML 文档的 DOM 结构,而 DOM 是基于浏览器窗口中显示的 HTML 文档,并且页面内容是通过这种方式动态生成的。内容可以是计算出来的,也可以从服务器异步获取,比如使用XMLHttpRequest对象从远程服务器获取需要显示的内容。而DOM基于浏览器窗口中显示的HTML文档,通过这种方式动态生成页面内容。内容可以是计算出来的,也可以从服务器异步获取,比如使用XMLHttpRequest对象从远程服务器获取需要显示的内容。而DOM基于浏览器窗口中显示的HTML文档,通过这种方式动态生成页面内容。内容可以是计算出来的,也可以从服务器异步获取,比如使用XMLHttpRequest对象从远程服务器获取需要显示的内容。
网站 内容抓取软件工具包MetaSeeker直接分析DOM结构,使用XPath表达式定位抓取的内容,并使用XSLT对抓取结果进行转换。因此,从本质上讲,解决AJAX网站内容爬取问题还是比较容易的。然而,Javascript 是一种强大的编程语言。实现业务逻辑的能力远高于HTML语言。动态生成网站 内容的方式是千变万化的。因此,MetaSeeker 只能分阶段逐步支持 AJAX网站 内容。抓取,每个版本都会增加新的特性,解决新发现的AJAX实现方式带来的抓取问题。从 V1.0 版本开始,MetaSeeker 可以在 HTML 页面加载过程中捕获 AJAX 生成的动态内容,例如捕获 Google Adsence 广告或搜索结果以进行商业智能分析。此版本增强了抓取AJAX网站内容的能力。如果这些动态内容是在加载 HTML 页面后创建的,则必须使用本节中介绍的方法来抓取它们。该方法也适用于抓取使用Javascript函数(例如setTimeout或setInterval)定期刷新网页内容的页面。DOM MetaStudio 是在加载 HTML 文档后自动生成的。如果加载了 HTML 文档中的 Javascript 代码并在加载 HTML 后修改了 DOM 内容,则可能不会反映在 MetaStudio 的 DOM 树中。此时,
无论是数据抓取规则还是超链接抓取规则,都与普通网页的定义方法一致,请参考前面的章节。但是,在上传信息结构和抓取规则之前,您需要单击菜单项。这是一个检查类型的菜单。不勾选,表示信息结构是为AJAX网页定义的,网页的内容是HTML文档加载后才显示的。修改显示,因此不能采用正常的操作方法:“加载信息结构,立即应用信息结构分析网页内容”。操作的变化在加载信息结构进行编辑时体现。如果需要编辑之前定义的信息结构,您需要在 Schema List 工作台上执行加载操作。如果遇到上一节描述的信息结构,网站内容捕获规则定义工具MetaStudio会弹出一个对话框:信息结构加载和分析会延迟,请手动选择菜单项“后续分析”加载分析,提示用户:虽然已经下载了信息结构,但是还没有用于分析目标页面。您需要手动单击菜单。这是为了让 MetaStudio 等待 Javascript 修改 DOM。操作员观察嵌入在 MetaStudio 中的浏览器,直到需要它为止。看到内容后,点击菜单完成DOM刷新和信息结构应用分析。DataScraper DataScraper 的操作没有改变。实际上,DataScraper 工作流使用专用处理器 LoadDelayedPage 来捕获此类内容。
另外,由于这种网站的内容无法根据load事件判断爬取过程是否可以启动或终止,所以需要不断检测信息结构是否符合目标的结构网页,直到它超时。因此,关键特性服务器上有一个主题_fuller,可以使用MetaStudio加载信息结构,体验AJAX网站内容的抓取。此案例的详细描述请参考论坛讨论。DOM 默认情况下,网站 内容抓取规则生成工具MetaStudio左栏的DOM结构会自动刷新。每当目标示例页面的内容发生变化时,MetaStudio 的 DOM 结构也会自动刷新。此示例页面定义了信息结构。自动刷新会影响定义操作。因此,在这种情况下,您需要关闭 DOM 自动刷新。单击菜单项 DOM。这是一个检查菜单。如果你不勾选它,自动刷新将被关闭。