爬虫中使用HttpClient发送ajax请求,并处理返回的JSON字符串

本文介绍了如何在Java爬虫中利用HttpClient发送AJAX请求,并详细阐述了如何处理返回的JSON字符串,包括解析JSON数据,去除换行符、转义字符和多余符号。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

发送ajax请求和一般请求无异,只是在请求头信息中加上一条:

httpGet.addHeader("X-Requested-With","XMLHttpRequest");

下面是在目标网页上的ajax请求源码

<script>    
    Do(function(){
        $("html").delegate(".a_search_more","click",function(c){
            c.preventDefault();
            if(b.hasClass("processing")){
                return
            }
            var a=b.data();
            b.attr("title",b.text()).text("加载中...");
            $.get("/j/search",a,function(d){
                if(d.r){
                    b.text("加载失败...");
                    return
                }
                b.removeClass("processing");
                b.text(b.attr("title"));
                $(d.items.join("")).insertBefore(b.parent());//根据此行,基本确定返回的是json字符串
                if(!d.more){
                    b.hide()
                }
            })
        });
        ......
    }  
</script>

确定返回的是json字符串后,接下来要对json字符串进行处理。java中关于json处理的jar包比较多的是json-lib-XXX.jar,这个包到jdk1.5之后就没有见到新的版本了。所以我使用的是alibaba出的fastjson。
下面贴出返回的json字符串代码:

{"total":249,"more":true,"limit":20,"items":["\n  \n  <div class=\"result\">\n   ... ...   </div>\n        <p>吴邪戴上了三叔的人皮面具,以三叔的身份整顿了三叔在长沙的产业,三叔手下盘口的马仔无不归顺。吴邪、潘子和小花等人兵分三路,从杭州、长沙和北京出发前往广西。在广...</p>\n    </div>\n  </div>\n"]}

可以看到,大量显示的数据都在items中,接下来

JSONObject json = JSON.parseObject(html);         //将JSON类型的String语句转为JSON Object           
JSONObject jItem = json.getJSONObject("items");

上文中,html为返回的json字符串。这样就得到了items的值。

["\n  \n  <div class=\"result\">\n    ... ...   </div>\n  </div>\n"]

但是,这其中包含换行符和转义字符“\”,还有首尾的中括号,双引号。

String items = j.toString();
items = items.replace("\\n", "");   
items = items.replace("\\","");
items = items.substring(2, items.length()-2);
Document docAdd = Jsoup.parse(items);   //解析成为document
results = docAdd.select("div.result");  //得到Elements,成功解析
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值