我试图从带有phantomjs的网页获取链接href及其img src的元素列表。
网页示例:
<ul>
<li>
<a href="link A">
<img src="link B"></img>
</a>
</li>
</ul>
我试过了:
var lis = page.evaluate(function() {
var link_img = new Array;
SrcAlt = [];
var li = document.getElementsByTagName("li");
for(q = 0; q < li.length; q++){
var a = li[q].getElementsByTagName('a')[0];
var link = a.getElementsByTagName("img")[0];
SrcAlt.push({"img": a.href, "link": link.src});
}
return SrcAlt;
});
它只返回“img”:a.href正确,我无法得到“链接”,我不知道为什么。我该如何解决?
由于
答案 0 :(得分:0)
您应该提取图片的src
属性,就像使用a.href
一样:
SrcAlt.push({"img": a.href, "link": link.src});
<强>更新强>
为确认答案的有效性,我针对测试网页运行了测试脚本。
网页:
<html>
<body>
<ul>
<li>
<a href="http://google.com">
<img src="https://www.google.com/images/branding/googlelogo/1x/googlelogo_color_272x92dp.png"></img>
</a>
</li>
</ul>
</body>
</html>
剧本:
var page = require('webpage').create();
page.open('http://localhost/phantomjs.php', function(status) {
var lis = page.evaluate(function() {
var link_img = SrcAlt = new Array;
var li = document.getElementsByTagName("li");
for(q = 0; q < li.length; q++){
var a = li[q].getElementsByTagName('a')[0];
var link = a.getElementsByTagName("img")[0];
SrcAlt.push({"img": a.href, "link": link.src});
}
return (SrcAlt);
});
console.log(JSON.stringify(lis));
phantom.exit();
});
结果:
[{"img":"http://google.com/","link":"https://www.google.com/images/branding/googlelogo/1x/googlelogo_color_272x92dp.png"}]
如果答案仍然不适合您,请向我们展示您的脚本,实际的网页代码,脚本运行的结果,PhantomJS的版本 - 我们将尝试找出&# 39;错了。