gpt4 book ai didi

javascript - 使用 CasperJS 遍历网格

转载 作者:数据小太阳 更新时间:2023-10-29 04:33:47 25 4
gpt4 key购买 nike

我正在尝试测试 CasperJS,并且正在抓取一个具有如下网格布局的网站:

|Name      |Name      |
|Title |Title |
|Image |Image |
|Something |Something |
|----------------------
|Name |Name |
|Title |Title |
|Image |Image |
|Something |Something |
|----------------------

如果我不使用 CasperJS,我会检索所有包含的列表(在本例中为 4 个),然后在每个容器上运行一个方法,该方法可以检索具有所需属性的对象。

我似乎很难在 CasperJS 中做到这一点。首先我尝试在 casper.evaluate(function(){....}) 中返回 DOM 元素列表,但是它不能返回 DOM 元素。

然后我尝试创建一个 each 循环,将想要的对象 (4) 推送到一个数组并在 Evalue 中返回它,但它一直返回 null。

如何在 CasperJS 中做这样的事情。我能否以某种方式将容器的上下文返回给方法,该方法可以将对象返回给主要评估,从而返回对象的集合?

最佳答案

不幸的是,您无法从 evaluate() 函数获得复杂的结构,因为从 evaluate() 传递的任何 arg 都是 JSON.parse (JSON.stringify(arg)).

但这并不意味着你不能传递另一种对象。

这里有一个关于如何从 casper.evaluate() 获取对象数组的例子:

var arrayResult = this.evaluate(function getGridResuls(){

//create array
var arrayObjects = new Array();

//Iterates over table (grid) elements
jQuery("table.results").each(function( index ) {

//get table (grid)
var tableResult = jQuery(this);

//create basic object
objResult = new Object();

//fill object properties
objResult.name = tableResult.find('selector to get name').text();
objResult.title = tableResult.find('selector to get title').text();
objResult.image = tableResult.find('selector to get image info').text();
objResult.something = tableResult.find('selectot to get something').text().trim();

//assign object to array
arrayObjects[index] = objResult;

});

//return array with objects
return arrayObjects;

});

...
//do something with arrayResult

我假设 Web 上下文包含 JQuery 库。

提示:尝试使用浏览器控制台运行 evaluate() 函数的 js 代码,以确保您的 js 代码按预期工作。

关于javascript - 使用 CasperJS 遍历网格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17842979/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com