代码之家  ›  专栏  ›  技术社区  ›  yuk

从Matlab Web浏览器保存HTML页面

  •  1
  • yuk  · 技术社区  · 15 年前

    跟随 this question 我在检索到的页面上收到一条消息,说“ 您的浏览器不支持javascript,因此可能缺少某些功能!

    如果我用 web(url) 在MatlabWebBrowser中并接受证书(每个会话一次),页面将正确打开。

    如何使用脚本保存浏览器中的页面源?还是从系统浏览器?或者即使没有浏览器,也有办法得到那个页面?

    url='https://cgwb.nci.nih.gov/cgi-bin/hgTracks?position=chr7:55054218-55242525';
    
    2 回复  |  直到 13 年前
        1
  •  2
  •   Community CDub    8 年前

    据我所知,页面源下载得很好,只要确保在本地打开保存的页面时让javascript运行即可。

    [...]
    <script type='text/javascript' src='../js/hgTracks.js'></script>
    <noscript><b>Your browser does not support JavaScript so some functionality may be missing!</b></noscript>
    [...]
    

    请注意 solution 您使用的只是下载网页,没有任何附加的内容(图片、.css、.js等等)。

    你能做的就是打电话 wget 要获取包含所有文件的页面:

    url = 'https://cgwb.nci.nih.gov/cgi-bin/hgTracks?position=chr7:55054218-55242525';
    command = ['wget --no-check-certificate --page-requisites ' url];
    system( command );
    

    如果您使用的是windows机器,则可以从gnuwin32项目或 many other implementations .

        2
  •  1
  •   ckg    13 年前

    保存cookies是否足以解决您的问题?wget可以通过--keep session cookies和--save cookies来实现 文件名 ;然后使用--load cookies 文件名 在以后的请求中获取cookies。类似于以下内容(注意,我没有从Matlab测试过这个,所以引用等可能不完全正确,但我在其他上下文中使用了类似的shell构造):

    command_init = ['wget --no-check-certificate \
                          --page-requisites \
                          --keep-session-cookies \
                          --save-cookies cookie_file.txt \
                          --post-data \'user=X&pass=Y&whatever=TRUE\'' \
                          init_url];
    command_get  = ['wget --no-check-certificate \
                          --page-requisites \
                          --load-cookies cookie_file.txt' \
                          url];
    

    如果您没有任何post数据,但是后续get将更新cookies,那么您只需在后续get请求时使用keep和save。