V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
shoumu
V2EX  ›  程序员

后台获取网页截图

  •  
  •   shoumu ·
    shoumu · 2014-07-24 22:57:42 +08:00 · 5241 次点击
    这是一个创建于 3554 天前的主题,其中的信息可能已经有所发展或是发生改变。
    服务器返回相应的json数据,在浏览器中经过渲染得到图片。现在想要后台程序获取图片,有什么解决方案?

    已知的是phantomjs,还有没有更好的呢?
    18 条回复    2014-07-26 11:24:35 +08:00
    jsonline
        1
    jsonline  
       2014-07-24 23:39:35 +08:00
    HTML -> Canvas -> DataURI
    反正是要用到浏览器的API的
    izoabr
        2
    izoabr  
       2014-07-24 23:43:16 +08:00
    之前用这个转过报表,有时候执行的还是有点差距的。
    看你具体的需求,phantomjs出来有问题?
    shoumu
        3
    shoumu  
    OP
       2014-07-25 10:04:24 +08:00
    @izoabr phantomjs出来和浏览器中有一点不同
    shoumu
        4
    shoumu  
    OP
       2014-07-25 10:06:27 +08:00
    @jsonline 最后部署到ubuntu server,用不了浏览器api吧
    izoabr
        5
    izoabr  
       2014-07-25 10:10:17 +08:00 via iPhone
    @shoumu 是不是里面有js图表?
    shoumu
        6
    shoumu  
    OP
       2014-07-25 11:02:20 +08:00
    @izoabr 是的
    shoumu
        7
    shoumu  
    OP
       2014-07-25 11:02:54 +08:00
    @izoabr 或者我就直接获取图片的编码怎么做呢?
    lei286394973
        8
    lei286394973  
       2014-07-25 11:52:00 +08:00   ❤️ 1
    python 有个 webkit2png 包,你可以去试试,只是给个思路
    YiSheng
        9
    YiSheng  
       2014-07-25 14:12:46 +08:00
    我们产品目前用phantomjs, 没发现什么问题
    izoabr
        10
    izoabr  
       2014-07-25 17:28:15 +08:00
    @shoumu 我以前的图表总是会出现抓出空图表的情况,phantomjs有一个sleep的参数,就是加载完之后,再等几秒时间让网页执行。
    shoumu
        11
    shoumu  
    OP
       2014-07-25 17:41:35 +08:00
    @izoabr 我从phantomjs中抓下的图片和在浏览器中打开的图表两者的样式不一样。而且我一个一面中有多个图,需要分别抓取,挺麻烦。现在想要直接用phantomjs运行生成图表js代码,看一下是否能行。
    izoabr
        12
    izoabr  
       2014-07-25 17:47:33 +08:00
    @shoumu 方不方便把你抓出来的页面的图发出来我看看呀?logo之类的可以打下马赛克
    shoumu
        13
    shoumu  
    OP
       2014-07-25 18:25:37 +08:00
    @izoabr 怎么给你看
    izoabr
        14
    izoabr  
       2014-07-25 22:13:00 +08:00
    @shoumu 别光给我看呀,贴图,把图片地址单独一行回复上来,大家一起看看嘛。
    zhanglp888
        15
    zhanglp888  
       2014-07-25 23:16:16 +08:00
    可以用CutyCapt来截屏!
    http://cutycapt.sourceforge.net/

    是linux下的!


    使用方法:

    with X server
    ./CutyCapt --url=http://www.example.org --out=example.png

    without X server :
    ./CutyCapt/xvfb-run.sh --server-args="-screen 0, 1024x768x24" /usr/local/CutyCapt/CutyCapt --url=http://www.sohu.com --out=sohu.jpg
    shoumu
        16
    shoumu  
    OP
       2014-07-26 09:34:49 +08:00
    shoumu
        17
    shoumu  
    OP
       2014-07-26 09:36:27 +08:00
    @zhanglp888
    我试试,但是我只想要自动获取网页中的图表部分,而图表的位置是变化的
    izoabr
        18
    izoabr  
       2014-07-26 11:24:35 +08:00   ❤️ 1
    感谢@zhanglp888,我之前也用过这个,效果不错,但一直没想起来叫什么。
    @shoumu 如果你仅仅想弄图表,并且这个东西是比较固定的,那你就干脆自己生成就好了,他这个图表要么是一个后台现成的图片,要么是flash之类的通过json或者xml提供数据源实时生成,我也用过js版本的,都可以。你看看他的源码,是用什么生成的,干脆直接模仿,模仿一个这样的网页出来,就固定了,你每次截取这个你自己定制的页面就好了。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   1279 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 38ms · UTC 17:55 · PVG 01:55 · LAX 10:55 · JFK 13:55
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.