使用PhantomJS撬棍从本地网络服务器

时间:2015-06-02 15:00:38

标签: javascript svg d3.js phantomjs

我试图从网页中提取我用D3创建的SVG。因为我使用d3.csv来读取我的数据中的图像,我使用的是本地Web服务器。我一直在尝试使用Andrew Reagan的phantom-crowbar.js代码(https://github.com/andyreagan/phantom-crowbar),而这对于从http://页面和file:///页面中提取SVG非常有用,当我尝试从地址http://localhost:8000的页面中提取时,我收到以下消息:

TypeError: null is not an object (evaluating 'svg.setAttribute')

phantomjs://webpage.evaluate():32
phantomjs://webpage.evaluate():55
Evaluated our code

" Evaluated our code"是成功提取SVG但输出文件为空时通常会收到的消息。

我是JavaScript,PhantomJS的新手,并且在浏览器中使用D3,所以任何帮助都会非常感激。我真的不知道为什么本地服务器页面应该有不同的行为。

1 个答案:

答案 0 :(得分:1)

我最后问Andrew Reagan并且他很快回复了我,问题是我在我的脚本中的函数中设置了SVG "id"属性。由于我使用d3.csv()读取csv并生成我的图像,因此所有内容都包含在此函数中。我使用

"id"属性设置在此之外
d3.select("svg").attr("id", mysvg)

现在phantom-crowbar.js没问题。

@Stephen我需要生成并保存多个D3图像,因此我需要一种以编程方式提取SVG的方法,而安德鲁的phantom-crowbar.js是我尝试过的最佳方法,如果其他人想要做类似的事情。如果您只是偶尔需要这样做,SVG Crowbar书签很棒。