简单爬取html页面的表格中的数据

关于爬虫方面本人小白一个,通过无所不能的度娘,从中汲取营养,得到一个简单的能用的例子,在这分享一下,供大家一起汲取.

首先说一下,你想从一个页面中获取到你想要的数据,首先你要先得到这个页面.然后把获取到的页面 

使用Jsoup解析成 Document对象 之后进行一系列的操作.文字功底有限,直接上代码:


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

import java.io.*;
import java.net.URL;
import java.net.URLConnection;
import java.util.ArrayList;
import java.util.List;

public class test {

        public static void main(String[] args) throws IOException {
            System.out.println("开始");
            test d=new test();
            String str=d.getHtml();
            d.readHtml(str);
            System.out.println("结束");

        }
     
    //这就是通过url获取整个页面 返回页面的字符串 public String getHtml() throws IOException { StringBuffer buffer = new StringBuffer();
        //连接的url String urlpath="http://www.dyhjw.com/dyhjw/etf.html"; URL url = new URL(urlpath); URLConnection conn = url.openConnection(); InputStream in =conn.getInputStream(); //字节流-》字符流 InputStreamReader InputStreamReader reader = new InputStreamReader(in,"utf-8"); //按行 读出来 BufferedReader breader = new BufferedReader(reader); //读取数据 String line = ""; while((line= breader.readLine())!=null) { buffer.append(line); } return buffer+""; }     //读取页面的字符串 public void readHtml(String html){ //使用Jsoup解析html 成Document对象 Document document = Jsoup.parse(html);         //获取页面中table 的tr部分 Elements trs=document.select("table").select("tr"); List<Object[]> list=new ArrayList<>();
        //输出的位置 File file =new File("d://xxxx.txt"); FileWriter fWriter= null; if(!file.exists()) { try { file.createNewFile(); fWriter= new FileWriter(file); fWriter.append("日期(北京)\t净持仓量(吨)\t总价值(美元)\t增减(吨)\t影响(金银)\r\n"); for (int i = 1; i < trs.size(); i++) { Elements tds=trs.get(i).select("td"); Object[]obj={ tds.get(0).text(), Double.parseDouble(tds.get(1).text()), Double.parseDouble(tds.get(2).text()), tds.get(3).text(), tds.get(4).text() }; list.add(obj); String txt = ""; for (int j = 0; j < tds.size(); j++) { if (txt == "") { txt = tds.get(j).text(); }else { txt = txt + "\t"+tds.get(j).text(); } } fWriter.append( txt+"\r\n"); fWriter.flush(); } }catch (IOException e) { e.printStackTrace(); }finally { try { fWriter.close(); } catch (IOException e) { e.printStackTrace(); } } } } }

  每天进步一点点,大家共勉

猜你喜欢

转载自www.cnblogs.com/lmtdb/p/11598497.html