解决方案 »

  1.   

    楼主的问题我可以使用htmlunit解决 htmlunit可以获取到页面js执行完成之后的代码 就是你说的浏览器渲染完的代码 参考这个博文 有不懂得可以继续咨询我
      

  2.   

    估计你是没有把它页面需要的资源文件
    想JS文件,swf文件什么的也弄下来
      

  3.   


    用htmlunit也是一样啊,大神求解!!!
    import java.io.*;import com.gargoylesoftware.htmlunit.*;
    import com.gargoylesoftware.htmlunit.html.*;
    public class Hu
    {
       public static void main(String [] args) throws Exception
       {
          System.out.println("Hu");
          
        String st_path="D:\\TEST\\";
          
        WebClient webClient = new WebClient();
        Page page = webClient.getPage("http://dict.cn/mini.php?q=book");
        WebResponse response = page.getWebResponse();
        String st_content = response.getContentAsString();

    RandomAccessFile raf = new RandomAccessFile(st_path+"hu.html","rw");
    raf.writeChars(st_content);
    raf.close();
          
       }
    }
      

  4.   

    htmlunit的js执行很奇怪 在你执行完
    Page page = webClient.getPage("http://dict.cn/mini.php?q=book");
    这行代码时 并不一定就是渲染完的页面 他会有一个差不多叫jsexcute的线程 你在线程堆栈里面找一下 他其实一直在运行 他负责执行js代码 但是我们没法知道到底时候能执行完 这就是htmlunit的一个问题 说到底 你在这行代码下面做一个线程sleep 5秒钟 然后在获取其返回页面数据试试
      

  5.   


    照你说的试了一下,结果一样  但 httpunit一直警告
    八月 17, 2013 6:38:29 下午 com.gargoylesoftware.htmlunit.IncorrectnessListenerImpl notify
    WARNING: Obsolete content type encountered: 'application/x-javascript'.

    这是怎么回事???import java.io.*;import com.gargoylesoftware.htmlunit.*;
    import com.gargoylesoftware.htmlunit.html.*;
    public class Hu
    {
       public static void main(String [] args) throws Exception
       {
    System.out.println("Hu");
          
        String st_path="D:\\TEST\\";
          
        WebClient webClient = new WebClient();
        Page page = webClient.getPage("http://dict.cn/mini.php?q=book");
        
        Thread threada = new Threada();
        threada.start();
        
        WebResponse response = page.getWebResponse();
        String st_content = response.getContentAsString();

        
        RandomAccessFile raf = new RandomAccessFile(st_path+"hu.html","rw");
    raf.writeChars(st_content);
    raf.close();
          
       }
    }class Threada extends Thread{
    public void run(){
    System.out.println("threada sleep");
    try {
    sleep(5000);
    } catch (InterruptedException e) {
    // TODO 自动生成的 catch 块
    e.printStackTrace();
    }
    System.out.println("threada end");
    }

    }
      

  6.   

    你这个page和htmlpage是继承关系?  你这个代码怎么跟我给你的博客不太一样呢?
      

  7.   

    改成htmlpage也是一样,你那个博客的代码好像无法编译,所以我自己写了一遍。
    另外请教一下那个 WARNING: Obsolete content type encountered: 'application/x-javascript'.到底什么意思?网上貌似很多人也有相同的情况。
      

  8.   


    我晕,绕来绕去居然用 htmlPage.save(File file)可以得到完整的html文件,但我想直接得到html文件的字符串(不经过磁盘)。大神有什么好方法呢?
      

  9.   

    最近我也在学习htmlunit,我模拟登陆最后返回的是当前页面 我不知道问题出在了哪里
    求大神帮忙看看http://bbs.csdn.net/topics/390559708?page=1#post-395376261
      

  10.   


    我晕,绕来绕去居然用 htmlPage.save(File file)可以得到完整的html文件,但我想直接得到html文件的字符串(不经过磁盘)。大神有什么好方法呢?请用  String com.gargoylesoftware.htmlunit.SgmlPage.asXml()
    另外htmlunit支持多线程结贴