Javascript:使用dom加载的页面进行匹配

Javascript: match using dom loaded page

本文关键字:使用 dom 加载 Javascript      更新时间:2023-09-26

我正在尝试使用Chrome console从谷歌搜索结果中获取所有链接。

首先,我想获得dom加载的源代码。我尝试了以下代码。

var source = document.documentElement.innerHTML;

现在,当我在控制台源代码中键入source时,它会显示正确的dom加载源代码。但如果我运行alert(source);,它会显示页面的默认html源。

所以问题是当我运行低于代码

source.match(/class="r"><a href="(.*?)"/);

它返回null,因为变量source在加载dom之前具有源代码。

您可以使用DOM API(即getElementsByTagName)来查找页面中的所有a标记。看看:

var anchors = document.getElementsByTagName('A');
var matchingHrefs = Array.prototype.slice.call(anchors).filter(function(a) {
  return a.className == 'r';
}).map(function(a) {
  return a.href;
});
<a href="#first" class="r">A</a>
<a href="#second" class="d">B</a>
<a href="#third" class="r">C</a>

Array.prototype.slice.call调用将节点列表转换为常规数组。

可能需要将/g标志添加到正则表达式中以进行全局匹配。

像这样:yourHtml.match(/href="([^"]*")/g)