如何在不加载图像/脚本的情况下在后台加载和分析页面

How to load and analyze page in background without loading images/scripts?

本文关键字:加载 后台 情况下 脚本 图像      更新时间:2023-09-26

在不加载任何相关图像/脚本等的情况下,为AJAX请求的页面获取可用DOM的最佳方法是什么?

背景:我想在后台加载一个页面,然后对它进行某种数据挖掘(这是一个浏览器扩展,所以我无法控制页面本身)。我不想花时间在后台页面上加载图像和运行脚本,因为这只是我需要的页面内容

  1. 通过ajax加载数据
  2. 去掉所有包含srchref属性的标签,或者简单地用data:null更改这些属性的值。如果数据还包含内联样式,则应删除所有包含对外部资源引用的语句(例如,背景和边界图像、.htc组件、xul绑定、.ico游标)
  3. 将过滤后的数据附加到DOM并对其进行分析

步骤2可以通过javascript中的正则表达式来实现。例如

/* here we are in the ajax "success" callback */
...
data = data.replace(/(src|href|style)=['"]([^'"]+?)['"]/gi, 
function(match, attribute) {
   return (attribute.toLowerCase() === 'style')
       ? attribute + '=""'             /* remove all inline style */
       : attribute + '="data:null"';   /* href and src set to data:null */
})
/* append filtered data */
$(data).appendTo($('body_or_other_element'))

如果可能,请使用jQuery,正如我上面提到的。它可以根据需要轻松地选择页面DOM的部分。

以下是一些例子:

您可以获取标签href属性,如下所示:$("a",$(ajax_response)).attr("href");

标题的内容:$("Title",$(ajax_response)).html();

你可能需要测试选择器,看看哪一个最有效,但是,我认为这是一个简单的方法。