0

我正在 CasperJS 中构建一个链接刮板,主要功能看起来很像这样:

function findLinks() {
    return Array.prototype.map.call(document.querySelectorAll('a'), function(e){
        return { 
                 href: e.href,
                 title: e.title, 
                 rel: e.rel, 
                 anchor: e.text,
                 innerHTML: e.innerHTML
               };
    });
}

但是,我想以findLinks()某种方式进行修改,如果我的链接抓取工具发现这样的内容:

<a href="#" title="anchor tag" rel="nofollow"><img src="myimage.jpg" alt="beautiful image" /></a>

我可以<img>单独访问属性,就像使用链接一样。

我一直在阅读 Mozilla MDN 和 CasperJS,但我还没有找到实现这一目标的方法,

任何帮助将不胜感激!

4

2 回答 2

1

您正在寻找Element.children

children返回给定元素的子元素的集合。

在您的示例 HTML 中:

var b = document.querySelectorAll('a')[0];
alert(b.children[0].src); //First child's source: myimage.jpg

(小提琴)

于 2013-06-21T01:34:53.657 回答
0

文档对象模型 (DOM) API 是您正在寻找的。这是我发现对 DOM 文档有用的站点

在你的例子中e.childNodes[n].attributes['href']就是一个例子。

但是,更好的是,如果您使用极端的 html 树遍历,我的建议是使用 jQuery。它是为您的目的而制作的。

于 2013-06-21T01:47:18.070 回答