CasperJS' getElementsByXpath返回带有效XPath的null

时间:2016-01-03 15:47:45

标签: javascript xpath web-scraping phantomjs casperjs

我正在从网站上抓取足球比分数据。所有得分都在一个表格中,每<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有效!

1 个答案:

答案 0 :(得分:4)

You have three problems:

您可以通过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
        });
    }));
});