2-1-5
2022/9/13 23:17:52
本文主要是介绍2-1-5,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
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; } }
这篇关于2-1-5的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-05-15鸿蒙生态设备数量超8亿台
- 2024-05-13TiDB + ES:转转业财系统亿级数据存储优化实践
- 2024-05-09“2024鸿蒙零基础快速实战-仿抖音App开发(ArkTS版)”实战课程已上线
- 2024-05-09聊聊如何通过arthas-tunnel-server来远程管理所有需要arthas监控的应用
- 2024-05-09log4j2这么配就对了
- 2024-05-09nginx修改Content-Type
- 2024-05-09Redis多数据源,看这篇就够了
- 2024-05-09Google Chrome驱动程序 124.0.6367.62(正式版本)去哪下载?
- 2024-05-09有没有大佬知道这种数据应该怎么抓取呀?
- 2024-05-09这种运行结果里的10.100000001,怎么能最快改成10.1?