簡單爬取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(); } } } } }

  每天進步一點點,大家共勉

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM