如何找出DOM中的数据来自/卸载内存中的所有数据?

时间:2018-04-22 18:11:46

标签: javascript web-scraping

当您将鼠标悬停在图像上时,会出现一个显示特定值的页面。我需要以编程方式从页面中获取该值。我可以访问页面中的JS控制台,但无法弄清楚它来自何处。

我尝试在DOM更改中添加断点,但仍不清楚数据的来源。

我也试过转储整个window对象,但它似乎没有转储足够的数据或包含显示的数据(数字)(检查函数取自Chrome sendrequest error: TypeError: Converting circular structure to JSON

function censor(censor) {
  var i = 0;

  return function(key, value) {
    if(i !== 0 && typeof(censor) === 'object' && typeof(value) == 'object' && censor == value) 
      return '[Circular]'; 

    if(i >= 1129)
      return '[Unknown]';

    ++i; // so we know we aren't using the original object anymore

    return value;  
  }
}

for(var key in window){
  console.log(key);
  if(key === 'frames' || key === 'self' || key === 'window' || key === 'parent' || key === 'top' || key === 'document') continue;
  console.log(JSON.stringify(window[key], censor(window[key])))
}

有没有想法如何在页面中完全转储数据(这样我可以搜索它的确切位置)或者清楚地了解DOM中的数据来自哪里? DOM元素在图像悬停时添加,然后在移开鼠标时删除。

1 个答案:

答案 0 :(得分:0)

使用Chrome开发工具Macbook:~ ben$ flutter --version Flutter 0.3.3-pre.1 • channel master • https://github.com/flutter/flutter.git Framework • revision 315993e (5 hours ago) • 2018-04-20 14:49:33 +0200 Engine • revision 09d05a3891 Tools • Dart 2.0.0-dev.48.0.flutter-fe606f890b 元素,然后选择检查。在右侧面板中,选择事件监听器选项卡。在列表中,展开 鼠标悬停 (或其他相应的事件)。

您将看到直接影响该元素的代码链接。

编辑#1

引用有关从其他(可能是非受控制的)代码中检索数据的注释:

如果在您的代码未创建的闭包内创建/派生/控制该数据,则您不太可能检索。这是JavaScript中闭包的本质。数据可能位于您无法进入的泡沫中。

编辑#2

您可以使用的hack:强制元素上的right-click事件。这会将您追求的值放入DOM中。从DOM中提取值。然后关闭mouseover事件。