gpt4 book ai didi

javascript - 使用 casperjs 抓取文本节点的最快方法

转载 作者:行者123 更新时间:2023-11-28 01:48:34 25 4
gpt4 key购买 nike

我有这个结构,我需要从纯文本节点获取文本,如下所示

<strong><font color="#666666">Phones:</font></strong>
<br>
<br>
<img src="/image/fgh.jpg" title="Velcom" alt="Velcom" style="margin: 2 5 -3 5;">
"+375 29" //get this
<b>611 77 83</b> //and this

我尝试使用从 Chrome 控制台复制的 XPath

casper.thenOpen('url', function() {
result = this.getElementInfo(x('//*[@id="main_content"]/table[2]/tbody/tr[17]/td/table/tbody/tr/td[1]/p[1]/text()[3]'));
});

casper.then(function() {
this.echo(result.text);
});

但它不起作用。另外,当我尝试 result.data

console.log(this.getElementInfo(x('//*[@id="main_content"]/table[2]/tbody/tr[17]/td/table/tbody/tr/td[1]/p[1]/text()[3]')));

返回null,但是该元素存在于页面中,我查了一下

最佳答案

确保您已包含:

var x = require('casper').selectXPath;

如果这仍然不起作用,以下将从页面中检索所有文本,然后您可以进行解析。出于性能考虑,不建议这样做,但如果您有要解析的 anchor 文本,则确实可以这样做。您需要稍微修改。

var casper = require("casper").create ({
waitTimeout: 15000,
stepTimeout: 15000,
verbose: true,
viewportSize: {
width: 1400,
height: 768
},
onWaitTimeout: function() {
logConsole('Wait TimeOut Occured');
this.capture('xWait_timeout.png');
this.exit();
},
onStepTimeout: function() {
logConsole('Step TimeOut Occured');
this.capture('xStepTimeout.png');
this.exit();
}
});

casper.on('remote.message', function(msg) {
logConsole('***remote message caught***: ' + msg);
});

casper.userAgent('Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_5) AppleWebKit/537.4 (KHTML, like Gecko) Chrome/22.0.1229.94 Safari/537.4');

// vars
var gUrl = 'WebAddy'; //+++ Update URL

casper.start(gUrl, function() {
var tPlainText = this.evaluate(function() {

var bodyText = document.body;
var textContent = bodyText.textContent || bodyText.innerText;
var tCheck = textContent.indexOf("Phones:");

if (tCheck === -1) {
tPlainText = 'Phone Text Not Found';
return tPlainText;
} else {
// parse text
var tSplit = textContent.split('Phones:');
var tStr = (tSplit[1]) ? tSplit[1] : '';
var tPos1 = tStr.indexOf(''); //+++ insert text to stop parse
var tDesiredText = (tPos1 !== -1) ? tStr.substring(0, tPos1) : null;

return tDesiredText;
}
});
console.log(tPlainText);
});

casper.run();

关于javascript - 使用 casperjs 抓取文本节点的最快方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20005389/

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