我正在从网站上抓取足球比分数据。所有得分都在一个表格中,每<tr>
都有&#34;阻止主场比赛17&#34;和之后的一些独特的东西。
我在Chrome开发工具中测试了我的xpath,它只识别我需要的表格行。
var utils = require('utils');
var casper = require('casper').create();
var xpath = require('casper').selectXPath;
var result = [];
function getScores(){
console.log("getting scores");
result = __utils__.getElementsByXPath("//tr[contains(@id,'block_home_matches_17')");
}
casper.start('http://int.soccerway.com/', function() {
console.log("casper start....");
var l = getScores();
utils.dump(l);
});
casper.run();
代码将[]返回为utils.dump!为什么?我的xpath有效!
答案 0 :(得分:4)
You have three problems:
evaluate()
,但__utils__
) module仅在页面上下文中可用。您可以通过CasperJS函数检索目标DOM节点的表示 :
casper.start('http://int.soccerway.com/', function() {
utils.dump(this.getElementsInfo(xpath("//tr[contains(@id,'block_home_matches_17')")));
});
或直接处理页面上下文中的元素:
casper.start('http://int.soccerway.com/', function() {
utils.dump(this.evaluate(function(){
return __utils__.getElementsByXPath("//tr[contains(@id,'block_home_matches_17')").map(function(el){
return {} // TODO: produce your own representation
});
}));
});