Javascript 卡斯珀斯';getElementsByXpath返回带有有效XPath的null

Javascript 卡斯珀斯';getElementsByXpath返回带有有效XPath的null,javascript,xpath,web-scraping,phantomjs,casperjs,Javascript,Xpath,Web Scraping,Phantomjs,Casperjs,我正在从网站上抓取足球分数数据。所有分数都在一个表格中,每个都有“block home matches 17”和一些独特的内容 我在Chrome开发工具中测试了xpath,它只识别我需要的表行 var utils=require('utils'); var casper=require('casper').create(); var xpath=require('casper')。选择xpath; var结果=[]; 函数getScores(){ console.log(“获取分数”); 结果=

我正在从网站上抓取足球分数数据。所有分数都在一个表格中,每个
都有“block home matches 17”和一些独特的内容

我在Chrome开发工具中测试了xpath,它只识别我需要的表行

var utils=require('utils');
var casper=require('casper').create();
var xpath=require('casper')。选择xpath;
var结果=[];
函数getScores(){
console.log(“获取分数”);
结果=uuuUtils.getElementsByXPath(//tr[contains(@id,'block\u home\u matches_17');
}
卡斯珀,开始http://int.soccerway.com/,函数(){
console.log(“casper启动…”);
var l=getScores();
utils.dump(l);
});
casper.run();

代码返回[]作为utils.dump!为什么?我的xpath有效!

您有三个问题:

  • 只能通过访问沙盒页面上下文中的DOM节点,但是
  • 不能将DOM节点传递到外部上下文(请阅读)
  • 仅在页面上下文中可用
您可以通过CasperJS函数检索目标DOM节点的表示形式:

casper.start('http://int.soccerway.com/,函数(){
utils.dump(this.getElementsInfo(xpath(//tr[contains(@id,'block\u home\u matches\u 17'))));
});
或者直接处理页面上下文中的元素:

casper.start('http://int.soccerway.com/,函数(){
utils.dump(this.evaluate(function()){
return u utils u.getElementsByXPath(//tr[contains(@id,'block\u home\u matches_17')).map(函数(el){
return{}//TODO:生成自己的表示
});
}));
});

您有三个问题:

  • 只能通过访问沙盒页面上下文中的DOM节点,但是
  • 不能将DOM节点传递到外部上下文(请阅读)
  • 仅在页面上下文中可用
您可以通过CasperJS函数检索目标DOM节点的表示形式:

casper.start('http://int.soccerway.com/,函数(){
utils.dump(this.getElementsInfo(xpath(//tr[contains(@id,'block\u home\u matches\u 17'))));
});
或者直接处理页面上下文中的元素:

casper.start('http://int.soccerway.com/,函数(){
utils.dump(this.evaluate(function()){
return u utils u.getElementsByXPath(//tr[contains(@id,'block\u home\u matches_17')).map(函数(el){
return{}//TODO:生成自己的表示
});
}));
});

Related?Related?此外,您没有从
getScores()
返回任何内容,因此
l
将始终为空。此外,您没有从
getScores()
返回任何内容,因此
l
将始终为空。