htmlunit爬取Ajax动态生成的网页获取不到生成后的结果的问题的解决
来源:互联网 发布:小说网站php项目 编辑:程序博客网 时间:2024/06/06 07:44
在抓取某个站点的内容时,获取不到js加载后渲染的结果,但是也设置了支持js,支持ajax,并且设置了js执行的等待时间。可仍然获取不到。
后来查看控制台打印的异常信息,发现有一个关于页面js的异常:missing ) after argument list(***********.js#32);而这个js正是加载的需要抓取的部分。查看32行,控制台打印的该位置内容大致如下:
$('#news_pbl').masonry().masonry('reload');//���娴���版��� });
可见,该部分由于乱码,并没有换行,导致后边的])被注释掉,使得js代码出错,无法加载内容。
于是就尝试是否能修改该js的编码,使其正常执行。
经过查找:
webClient对象为实例化的WebClient,你可以调试,看用哪种编码.
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,你可以调试,看用哪种编码.
阅读全文
0 0
- htmlunit爬取Ajax动态生成的网页获取不到生成后的结果的问题的解决
- htmlunit爬取javascript、Ajax 动态生成的网页;jsoup解析XML文档
- 学习htmlunit获取动态网页加载后的代码
- 动态生成的控件有些是获取不到值的?
- 爬取js动态生成后的数据
- 利用htmlunit和jsoup来实现爬取js的动态网页
- 【Jsoup】配合 htmlunit 爬取异步加载的网页
- 【Jsoup】配合 htmlunit 爬取异步加载的网页
- htmlunit爬取js异步加载后的页面
- htmlunit爬取js异步加载后的页面
- 用scrapy爬取网页时网页JS动态生成的问题解决办法
- htmlunit教程 动态链接的获取
- ajax请求后动态生成节点的事件失效
- ajax获取不到Ueditor值的问题
- 通过Ajax动态生成的页面,解决复选框,选择一次不能再选择的问题
- 解决动态生成的网页在微信浏览器中每次返回都会重新生成的问题
- JAVA 爬虫获取js动态生成的网页数据
- python爬取动态生成的网页——以百度手机助手为例
- 显示屏ILI9325基本概念
- python0710
- 曾国藩:人才都是熬出来的,本事都是逼出来的
- CBW、CWDE、CDQ、CWD: 扩展指令
- 数据库连接池
- htmlunit爬取Ajax动态生成的网页获取不到生成后的结果的问题的解决
- POJ 2559 Largest Rectangle in a Histogram【单调栈】
- 为什么SPSS的日期要以1582年10月14日为基准
- 测试代码
- 解决Android应用方法数不能超过65K问题-使用multidex来解决方法数越界
- MongoDB操作数据库
- SQL 去重不用distinct如何实现?
- android手势
- 手势与ViewFlipper