gpt4 book ai didi

javascript - 如何正确使用getElementByXpath和getElementsByXpath?

转载 作者:行者123 更新时间:2023-11-28 06:36:30 26 4
gpt4 key购买 nike

如何使用 CasperJS 获取表“td”值?

HTML 源代码如下所示:

<table id="my_table">
<tr id='header'>
<th>sth_head_name</th>
<th>ath_head_name</th>
<th>sth_head_name</th>
<th>sth_head_name</th>
<th>sth_head_name</th>
</tr>
<tr>
<td>sth_value</td>
<td>sth_value</td>
<td>sth_value</td>
<td>sth_value</td>
<td>sth_value</td>
</tr>
<tr>
<td>sth_value</td>
<td>sth_value</td>
<td>sth_value</td>
<td>sth_value</td>
<td>sth_value</td>
</tr>
<tr>
<td>sth_value</td>
<td>sth_value</td>
<td>sth_value</td>
<td>sth_value</td>
<td>sth_value</td>
</tr>
</table>

我想使用 CasperJS 获取表值。首先,我需要选择表格的行;然后我想获得“td”值。我该如何解决这个问题?

我尝试了很多方法,但都没有效果。我的解决方案看起来与您在下面看到的类似。重要的是,首先选择“table_rows”;然后在 for 循环中选择 td 值。

var table_rows = casper.getElementsByXpath("//table[@id='my_table']/tr[not(@id='header')]");

for (var i = 0; i < table_rows.length; i++) {
var firstRequiredCell_query = table_rows[j].getElementByXpath("//td[position()=2]");
var secondRequiredCell_query = table_rows[j].getElementByXpath("//td[position()=4]");
var firstRequiredCell = firstRequiredCell_query.text;
var secondRequiredCell = secondRequiredCell_query.text;
}

最佳答案

CasperJS 有两个上下文。您只能从 casper.evaluate() 内部访问的页面上下文直接访问 DOM 1。它是沙盒的,因此外部定义的变量在evaluate()中不可用。 。

__utils__.getElementsByXpath() __utils__.getElementByXpath()仅在 casper 的页面上下文中可用不可用。这两个函数直接返回 DOM 节点,因此这些节点本身没有 getElementByXpath()对它们起作用。

但你根本不需要这个:

casper.then(function(){
var info = this.evaluate(function(){
var table_rows = __utils__.getElementsByXpath("//table[@id='my_table']/tr[not(@id='header')]");

return table_rows.map(function(tr){
return {
a: tr.children[1].textContent,
b: tr.children[3].textContent
};
});
});
this.echo(JSON.stringify(info, undefined, 4));
});

你可以使用所有的方式来遍历 DOM,比如 children , querySelector()document.evaluate() .

1 另请阅读 PhantomJS documentation of the same function .

关于javascript - 如何正确使用getElementByXpath和getElementsByXpath?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34239161/

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