html 爬数据,简单爬取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 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();

}

}

}

}

}

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值