htmlunit爬取Ajax动态生成的网页获取不到生成后的结果的问题的解决
2017-07-10 20:49
393 查看
在抓取某个站点的内容时,获取不到js加载后渲染的结果,但是也设置了支持js,支持ajax,并且设置了js执行的等待时间。可仍然获取不到。
后来查看控制台打印的异常信息,发现有一个关于页面js的异常:missing ) after argument list(***********.js#32);而这个js正是加载的需要抓取的部分。查看32行,控制台打印的该位置内容大致如下:
$('#news_pbl').masonry().masonry('reload');//���娴���版��� });
可见,该部分由于乱码,并没有换行,导致后边的])被注释掉,使得js代码出错,无法加载内容。
于是就尝试是否能修改该js的编码,使其正常执行。
经过查找:
webClient对象为实例化的WebClient,你可以调试,看用哪种编码.
后来查看控制台打印的异常信息,发现有一个关于页面js的异常:missing ) after argument list(***********.js#32);而这个js正是加载的需要抓取的部分。查看32行,控制台打印的该位置内容大致如下:
$('#news_pbl').masonry().masonry('reload');//���娴���版��� });
可见,该部分由于乱码,并没有换行,导致后边的])被注释掉,使得js代码出错,无法加载内容。
于是就尝试是否能修改该js的编码,使其正常执行。
经过查找:
webClient.setWebConnection( new WebConnectionWrapper(wc) { public WebResponse getResponse(WebRequest request) throws IOException { WebResponse response = super.getResponse(request); if (request.getUrl().toExternalForm().contains("bfdata.js")) {//bfdata.js是需要修改编码的js,你可以修改该处逻辑 String content = response.getContentAsString("GBK"); WebResponseData data = new WebResponseData(content.getBytes("UTF-8"), response.getStatusCode(), response.getStatusMessage(), response.getResponseHeaders()); response = new WebResponse(data, request, response.getLoadTime()); } return response; } } );
webClient对象为实例化的WebClient,你可以调试,看用哪种编码.
相关文章推荐
- 解决动态生成的网页在微信浏览器中每次返回都会重新生成的问题
- 通过Ajax动态生成的页面,解决复选框,选择一次不能再选择的问题
- HtmlUnit爬取Ajax动态生成的网页以及自动调用页面javascript函数
- $.ajax获取不到数据问题解决
- HtmlUnit爬取Ajax动态生成的网页以及自动调用页面javascript函数
- tomcat7以上,ajax post参数后台获取不到的问题,post参数大小不能大于2M的解决办法!
- Oracle数据库中字段定义为Char类型,Hibernate用该字段进行动态绑定参数查询,获取不到结果的问题
- 如何用webbrowser获取ajax动态生成的网页的源码?
- 类型:Ajax;问题:ajax调用ashx参数获取不到;结果:ashx文件获取$.ajax()方法发送的数据
- ASP.NET+AJAX解决网页打开等待问题
- 微信公众号平台网页授权接口中获取到的授权code传递给(即一个微信公众号网页授权给)任何其他多个回调域名下的url,解决了只能设置一个网页授权回调域名的问题,解决了redirect_uri参数错误的问
- ajax动态加载swiper,滑动问题解决
- 对于“不返回任何键列信息的 SelectCommand 不支持 UpdateCommand 的动态 SQL 生成”问题的解决
- 解决httpurlconnection获取网页数据部分中文乱码问题
- 使用jQuery的插件qrcode生成二维码(静态+动态生成)及常见问题解决方法
- jsp获取JavaScript生成的中文cookie出现乱码问题解决方法
- 黄聪:C#里如何使用WebBrowser获取处理AJAX生成的网页内容?
- 使用WebBrowser获取网页源代码,解决中文乱码问题
- 批处理解决ie不支持javascript及无法显示动态网页等问题[转]
- 解决hibernate 查询包含中文参数查不到结果的问题