使用Casperjs访问SVG对象的" D"元素[英] access the 'd' element from an SVG object with casperjs

问题描述

我是JavaScript/phantomjs/casperjs的初学者(就像仅学习几天的时间),但我坚持使用此SVG图,我试图从.

中删除数据.

我正在尝试使用Casperjs代码从SVG对象访问d="M20,331.37,331.37,21.40...."元素,并在控制台和TXT文件(或CSV)中写入.我尝试以下代码:

var casper = require('casper').create({
    pageSettings: {
        loadImages: true,
        loadPlugins: true,
        userAgent: 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/44.0.2403.157 Safari/537.36'
    }
});

//First step is to open baidu.html
casper.start().thenOpen("file:///baidu.html", function() {
    console.log("Baidu website opened");
    this.wait(6000);
});


casper.then(function() {
     var dataFromGraph = this.getElementsAttribute(require('casper').selectXPath('//*[@id="trend"]/svg/path[6]'),"d");
     this.echo(dataFromGraph);
     require('fs').write("data_graph.txt", dataFromGraph,'w');
});

casper.run();

但是什么都没有.我得到NULL元素或空结果. 这是我尝试的所有其他代码:

 var dataFromGraph = this.fetchText(require('casper').selectXPath('//*[@id="trend"]/svg/path[6]/d'));
 var dataFromGraph = this.getElementsAttribute(require('casper').selectXPath('//*[@id="trend"]/svg/path[6]'),"d") //,"d")
 var dataFromGraph = this.getElementInfo(require('casper').selectXPath('//*[@id="trend"]/svg/path[6]'))
 var dataFromGraph = this.fetchText("#trend > svg > path");

我有XPATH和对象的选择器,但我不确定如何加速.这是我要废的元素的图片.

 there

作为网站,我要刮下一个密码,这是我从中保存的html文件 https:https:https://ufile.io/5y9g2 .

我要废料的元素是图表背后的数据.

任何帮助将不胜感激.

推荐答案

我对您的脚本进行了一些重新编写,现在它起作用了.检查下面的摘要.

var fs = require('fs');
var casper = require('casper').create();

casper.start().thenOpen("http://localhost:8001/baidu.html", function() {
    console.log("Baidu website opened");
});

casper.then(function() {
  var graphData = this.evaluate(function() {
    return document.querySelector('#trend > svg > path:nth-child(11)').getAttribute('d')
  });
  this.echo(graphData);
  fs.write("data_graph.txt", graphData,'w');
});

casper.run();

希望有帮助!

本文地址:https://www.itbaoku.cn/post/1740073.html