CasperJS脚本
listItems = this.evaluate(function () {
var nodes = document.querySelectorAll('ul > li');
return [].map.call(nodes, function(node) {
return node;
});
});
var tr_data = listItems.map(function(str) {
var elements = str;
// var data = {
// ip : ????
// };
return elements;
});
页面标记
<ul>
<li> // Multiple Li
<div class=“image”>
<div class=“thumb”>
<p>
<img src=“SOURCE” > // Retrieve SOURCE
<div class=“text”>
<p>TEXT </p> // Retrieve TEXT
我试图检索来源和文字。请告知我在哪里可以学习如何检索SOURCE&amp;粗体文字。
答案 0 :(得分:0)
PhantomJS仅支持将原始对象传入或传出页面上下文(page.evaluate()
)。 DOM节点是无法传递的复杂对象。 CasperJS具有完全相同的限制。
您可以在页面上下文中创建一个原始对象并将其传递出去:
casper.then(function(){
var listItems = this.evaluate(function () {
var nodes = document.querySelectorAll('ul > li');
return [].map.call(nodes, function(node) {
return {
source: node.querySelector(".thumb img").src,
text: node.querySelector("div.text p").textContent
};
});
});
this.echo(JSON.stringify(listItems, undefined, 4)); // pretty print
});