ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

2-1-5

2022-09-13 15:01:44  阅读:132  来源: 互联网

标签: String zb public szz gj pm


package task;

import java.io.File;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.ArrayList;

import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;

public class Crawler {
    
    //1.成员变量
    private static String outputfile = "output\\2018年世界各国GDP数据.txt";
    private static String sourcefile = "resource\\2018年世界各国GDP数据 .htm";
    
    
    //2.解析本地网页,返回Document
    public static Document getHtml() throws IOException {
        File f=new File(sourcefile);  //创建文件对象
        //解析本地文件,第一个参数是文件对象
        //第二个参数是网页的字符编码格式
        Document doc=Jsoup.parse(f,"UTF-8");  
        return doc;
    }
    
    //3.提取数据,返回集合
            public static ArrayList<EntityBean> getData(Document doc) throws IOException {
                //利用selector选择器,提取32行数据
                Elements trs=doc.select("body > div.container > div.container > div:nth-child(5) > div.col-md-9 > div > div > div > table > tbody > tr");
                ArrayList<EntityBean> list=new ArrayList<EntityBean>();//创建集合对象
                for(Element tr : trs) {
                    if(tr.childNodeSize()<5) {
                        continue;
                    }
                    //获取tr,每一行的前6列数据
                    String pm=tr.child(0).text();
                    String gj=tr.child(1).text();
                    String szz=tr.child(2).text();
                    String GDP=tr.child(3).text();
                    String zb=tr.child(4).text();
                    //每行数据创建一个对应的实例化对象ed
                    EntityBean eb=new EntityBean(pm,gj,szz,GDP,zb);
                    //System.out.println(eb.toString());
                    list.add(eb);//将每一行数据对象放进集合
                }
                return list;
            }
    
    //4.写出到本地文件系统
            public static void wirteToFile(ArrayList<EntityBean>  ebs) throws FileNotFoundException {
                PrintWriter pw=new PrintWriter(outputfile);//创建字节打印流对象
                for(EntityBean eb : ebs) {
                    pw.println(eb.getPm()+"\t"+eb.getGj()+"\t"+eb.getSzz()+
                            "\t"+eb.getGDP()+"\t"+eb.getZb());
                }
                pw.close();
            }
    //5.主方法
    public static void main(String[] args) throws IOException {
        Document doc = Crawler.getHtml();//解析网页,得到doc对象
        System.out.println("网页标题:"+doc.title());
        ArrayList<EntityBean> entitys = Crawler.getData(doc);  //提取数据
        Crawler.wirteToFile(entitys);
    }
    
}
package task;

public class EntityBean {
    //成员变量列表
    private String pm;
    private String gj;
    private String szz;
    private String GDP;
    private String zb;
    
    //get()方法和set()方法
    public String getPm() {
        return pm;
    }
    public void setPm(String pm) {
        this.pm = pm;
    }
    public String getGj() {
        return gj;
    }
    public void setGj(String gj) {
        this.gj = gj;
    }
    public String getSzz() {
        return szz;
    }
    public void setSzz(String szz) {
        this.szz = szz;
    }
    public String getGDP() {
        return GDP;
    }
    public void setGDP(String gDP) {
        GDP = gDP;
    }
    public String getZb() {
        return zb;
    }
    public void setZb(String zb) {
        this.zb = zb;
    }
    
    //重写toString()方法
    @Override
    public String toString() {
        return "EntityBean [pm=" + pm + ", gj=" + gj + ", szz=" + szz + ", GDP=" + GDP + ", zb=" + zb + "]";
    }
    
    //无参构造方法
    public EntityBean() {
        super();
    }
    
    //有参构造方法
    public EntityBean(String pm, String gj, String szz, String gDP, String zb) {
        super();
        this.pm = pm;
        this.gj = gj;
        this.szz = szz;
        GDP = gDP;
        this.zb = zb;
    }
}
    
    

 

标签:,String,zb,public,szz,gj,pm
来源: https://www.cnblogs.com/modikasi/p/16689109.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有