我通过对HTML的解析,得到了图片的URL,例如<img src="http://xxx.xxx.xxx/xxx.gif"/>,这种情况,我可以通过打开一个输入流把http://xxx.xxx.xxx/xxx.gif保存到我的硬盘上,但是如果是这种情况:<img src="xxx/xxx.gif"/>,我该怎么得到这个图片呢?1、通过http的head得到相对路径的根再组成绝对地址。2、去浏览器的本地缓存地址取这个图片。我认为第二种好像难度大一些,第一种又不知道具体的做法。请指教第一种的具体做法,或者有更好的方案建议,谢谢。

解决方案 »

  1.   

    网站的物理路径request.getSession().getServletContext().getRealPath("");
    其他的根据图片的具体位置加上 比如 request.getSession().getServletContext().getRealPath("")+"\\eWebEditor\\" +"xxx.gif";
      

  2.   

    你读取的时候,要加上你包含<img 标签的的url里面的地址比如
    URL url = new URL("http://www.java2000.net");
    则读取这个页面的内容时,
    <img src="images/1212/gif">
    里面的相对路径都是 http://www.java2000.net/images/1212.gif加上你的 url 就行了!
      

  3.   

    小木屋:
    你大概没有理解我的意思,我这程序是用来解析任意一个网络上的html,把里面的图片抓取出来,而不是在我自己的系统里找图片,所以没有request和session的。
    =====================================
    老紫竹  群:60925821 www.enjoyjava.net:
    你说的这个方法我猜想应该可以解决大部分情况下的问题,但是像下面这样的情况应该就不行了:
    比如URL url = new URL("http://www.java2000.net/xxxAction.do");
    <img src="images/1212.gif"/>
    这时如果组成http://www.java2000.net/xxxAction.do/images/1212.gif这样的URL,应该是取不到的我想。当然,这本身就是一个用于爬虫的程序,不需要保证100%的成功率,但是我想能不能有更好的思路或方法呢?
      

  4.   

    this.().getServletContext().getRealPath(""); 
    自己拼装一下。
    老紫竹的方法应该也取得到的。