栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Java网络爬虫以fastjson提取JSON数据

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Java网络爬虫以fastjson提取JSON数据

什么是fastjson fastjson是阿里巴巴的开源JSON解析库,它可以解析JSON格式的字符串,支持将Java Bean序列化为JSON字符串,也可以从JSON字符串反序列化到JavaBean fastjson配置Maven依赖

    com.alibaba
    fastjson
    1.2.79

方法类转换图如下: 对象关系: 数组集合关系: 总图: 以中国外汇交易中心源码为例:

解析其源码可知,其中https://www.chinamoney.com.cn/r/cms/www/chinamoney/data/fx/ccpr.json为承载数据的json页
添加HttpClient获取其网页源码:
数据采集所需依赖有:


    org.apache.httpcomponents
    httpclient
    4.5.6

先创建几个实体类(实体类的变量名应与解析的JSON字符串中变量名相同):

创建实体类Page.java:
public class Page {
    private String head;
    private String data;
    private String records;

    public String getHead() {
        return head;
    }

    public void setHead(String head) {
        this.head = head;
    }

    public String getData() {
        return data;
    }

    public void setData(String data) {
        this.data = data;
    }

    public String getRecords() {
        return records;
    }

    public void setRecords(String records) {
        this.records = records;
    }
}
创建实体类Head.java:
public class Head {
    private String version;
    private String provider;
    private String req_code;
    private String rep_code;
    private String rep_message;
    private String ts;
    private String producer;

    public String getVersion() {
        return version;
    }

    public void setVersion(String version) {
        this.version = version;
    }

    public String getProvider() {
        return provider;
    }

    public void setProvider(String provider) {
        this.provider = provider;
    }

    public String getReq_code() {
        return req_code;
    }

    public void setReq_code(String req_code) {
        this.req_code = req_code;
    }

    public String getRep_code() {
        return rep_code;
    }

    public void setRep_code(String rep_code) {
        this.rep_code = rep_code;
    }

    public String getRep_message() {
        return rep_message;
    }

    public void setRep_message(String rep_message) {
        this.rep_message = rep_message;
    }

    public String getTs() {
        return ts;
    }

    public void setTs(String ts) {
        this.ts = ts;
    }

    public String getProducer() {
        return producer;
    }

    public void setProducer(String producer) {
        this.producer = producer;
    }
}
创建实体类Record.java:
public class Record {
    private String vrtCode;
    private String price;
    private String bp;
    private String vrtName;
    private String vrtEName;
    private String foreignCName;
    private String bpDouble;
    private String approvedTime;
    private String approvedTimeEn;
    private String showDate;
    private String showDateForCn;
    private String lastMonthAvgPrice;
    private String monthPrice;
    private String quarterPrice;
    private String yearPrice;
    private String isShowBp;
    private String show;
    private String url;
    private String bannerPic;
    private String bannerCss;

    public String getVrtCode() {
        return vrtCode;
    }

    public void setVrtCode(String vrtCode) {
        this.vrtCode = vrtCode;
    }

    public String getPrice() {
        return price;
    }

    public void setPrice(String price) {
        this.price = price;
    }

    public String getBp() {
        return bp;
    }

    public void setBp(String bp) {
        this.bp = bp;
    }

    public String getVrtName() {
        return vrtName;
    }

    public void setVrtName(String vrtName) {
        this.vrtName = vrtName;
    }

    public String getVrtEName() {
        return vrtEName;
    }

    public void setVrtEName(String vrtEName) {
        this.vrtEName = vrtEName;
    }

    public String getForeignCName() {
        return foreignCName;
    }

    public void setForeignCName(String foreignCName) {
        this.foreignCName = foreignCName;
    }

    public String getBpDouble() {
        return bpDouble;
    }

    public void setBpDouble(String bpDouble) {
        this.bpDouble = bpDouble;
    }

    public String getApprovedTime() {
        return approvedTime;
    }

    public void setApprovedTime(String approvedTime) {
        this.approvedTime = approvedTime;
    }

    public String getApprovedTimeEn() {
        return approvedTimeEn;
    }

    public void setApprovedTimeEn(String approvedTimeEn) {
        this.approvedTimeEn = approvedTimeEn;
    }

    public String getShowDate() {
        return showDate;
    }

    public void setShowDate(String showDate) {
        this.showDate = showDate;
    }

    public String getShowDateForCn() {
        return showDateForCn;
    }

    public void setShowDateForCn(String showDateForCn) {
        this.showDateForCn = showDateForCn;
    }

    public String getLastMonthAvgPrice() {
        return lastMonthAvgPrice;
    }

    public void setLastMonthAvgPrice(String lastMonthAvgPrice) {
        this.lastMonthAvgPrice = lastMonthAvgPrice;
    }

    public String getMonthPrice() {
        return monthPrice;
    }

    public void setMonthPrice(String monthPrice) {
        this.monthPrice = monthPrice;
    }

    public String getQuarterPrice() {
        return quarterPrice;
    }

    public void setQuarterPrice(String quarterPrice) {
        this.quarterPrice = quarterPrice;
    }

    public String getYearPrice() {
        return yearPrice;
    }

    public void setYearPrice(String yearPrice) {
        this.yearPrice = yearPrice;
    }

    public String getIsShowBp() {
        return isShowBp;
    }

    public void setIsShowBp(String isShowBp) {
        this.isShowBp = isShowBp;
    }

    public String getShow() {
        return show;
    }

    public void setShow(String show) {
        this.show = show;
    }

    public String getUrl() {
        return url;
    }

    public void setUrl(String url) {
        this.url = url;
    }

    public String getBannerPic() {
        return bannerPic;
    }

    public void setBannerPic(String bannerPic) {
        this.bannerPic = bannerPic;
    }

    public String getBannerCss() {
        return bannerCss;
    }

    public void setBannerCss(String bannerCss) {
        this.bannerCss = bannerCss;
    }
}
从中国外汇交易中心获取json中的数据程序,如下:
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.util.EntityUtils;

import java.util.ArrayList;
import java.util.List;


public class Main {
    public static void main(String[] args) {
        String text="";
        try
        {
            
            CloseableHttpClient httpClient=new DefaultHttpClient();
            HttpGet httpGet=new HttpGet("http://www.chinamoney.com.cn/r/cms/www/chinamoney/data/fx/ccpr.json");
            HttpResponse response=httpClient.execute(httpGet);
            HttpEntity entity= response.getEntity();
            if(entity!=null)
            {
                text= EntityUtils.toString(entity,"UTF-8");
                EntityUtils.consume(entity);
            }

            
            //  JSON字符串-->JSON对象
            JSonObject jsonObject= JSON.parseObject(text);
            Page page=JSON.toJavaObject(jsonObject,Page.class);
            System.out.println("Page.Head="+page.getHead());
            System.out.println("Page.Data="+page.getData());
            System.out.println("Page.Records="+page.getRecords());
            //  JSON对象-->JSON数组-->JSON字符串-->Java集合
            JSonArray jsonArray=jsonObject.getJSonArray("records");
            List records=new ArrayList<>();
            for(int i=0;i
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/785536.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号