httpclient如何完整抓取php动态加载网页 JavaPHPhttpclient抓取网页浏览器 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 楼主的问题我可以使用htmlunit解决 htmlunit可以获取到页面js执行完成之后的代码 就是你说的浏览器渲染完的代码 参考这个博文 有不懂得可以继续咨询我 估计你是没有把它页面需要的资源文件想JS文件,swf文件什么的也弄下来 用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(); }} htmlunit的js执行很奇怪 在你执行完Page page = webClient.getPage("http://dict.cn/mini.php?q=book");这行代码时 并不一定就是渲染完的页面 他会有一个差不多叫jsexcute的线程 你在线程堆栈里面找一下 他其实一直在运行 他负责执行js代码 但是我们没法知道到底时候能执行完 这就是htmlunit的一个问题 说到底 你在这行代码下面做一个线程sleep 5秒钟 然后在获取其返回页面数据试试 照你说的试了一下,结果一样 但 httpunit一直警告八月 17, 2013 6:38:29 下午 com.gargoylesoftware.htmlunit.IncorrectnessListenerImpl notifyWARNING: 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"); } } 你这个page和htmlpage是继承关系? 你这个代码怎么跟我给你的博客不太一样呢? 改成htmlpage也是一样,你那个博客的代码好像无法编译,所以我自己写了一遍。另外请教一下那个 WARNING: Obsolete content type encountered: 'application/x-javascript'.到底什么意思?网上貌似很多人也有相同的情况。 我晕,绕来绕去居然用 htmlPage.save(File file)可以得到完整的html文件,但我想直接得到html文件的字符串(不经过磁盘)。大神有什么好方法呢? 最近我也在学习htmlunit,我模拟登陆最后返回的是当前页面 我不知道问题出在了哪里求大神帮忙看看http://bbs.csdn.net/topics/390559708?page=1#post-395376261 我晕,绕来绕去居然用 htmlPage.save(File file)可以得到完整的html文件,但我想直接得到html文件的字符串(不经过磁盘)。大神有什么好方法呢?请用 String com.gargoylesoftware.htmlunit.SgmlPage.asXml()另外htmlunit支持多线程结贴 从本质上讨论Struts2获取request的方法 如何使用log4j记录工作日志 如何判断新输入的注册用户名是否在数据库中存在 用jsp如何获取本机的SQL Server服务器的名称 请问如何把汉字转换成RFC1738编码? 请问struts中memberAction.do?action=0的 "=0" 是从哪得到的? 一次下载两个文件? JSP调试问题!!大虾救命啊!!!! 奇怪的问题,请各位高手帮我看看,谢谢了!!!!! pStmt.setDate()的问题 HttpClient如何接收有ModelAndView返回的数据 solr和tomcat配置的问题
想JS文件,swf文件什么的也弄下来
用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();
}
}
Page page = webClient.getPage("http://dict.cn/mini.php?q=book");
这行代码时 并不一定就是渲染完的页面 他会有一个差不多叫jsexcute的线程 你在线程堆栈里面找一下 他其实一直在运行 他负责执行js代码 但是我们没法知道到底时候能执行完 这就是htmlunit的一个问题 说到底 你在这行代码下面做一个线程sleep 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");
}
}
另外请教一下那个 WARNING: Obsolete content type encountered: 'application/x-javascript'.到底什么意思?网上貌似很多人也有相同的情况。
我晕,绕来绕去居然用 htmlPage.save(File file)可以得到完整的html文件,但我想直接得到html文件的字符串(不经过磁盘)。大神有什么好方法呢?
求大神帮忙看看http://bbs.csdn.net/topics/390559708?page=1#post-395376261
我晕,绕来绕去居然用 htmlPage.save(File file)可以得到完整的html文件,但我想直接得到html文件的字符串(不经过磁盘)。大神有什么好方法呢?请用 String com.gargoylesoftware.htmlunit.SgmlPage.asXml()
另外htmlunit支持多线程结贴