我试图从网页中提取我用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,所以任何帮助都会非常感激。我真的不知道为什么本地服务器页面应该有不同的行为。
答案 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
书签很棒。