java操作html格式数据

近期在做数据抓取功能,抓取到的数据为html格式,需在后台进行转换后取值,为了避免使用字符串查找方式获取而使用Jsonp完美实现。

1. 引入Jsonp:

11 <dependency> 22 <groupId>org.jsoup</groupId> 33 <artifactId>jsoup</artifactId> 44 <version>1.11.2</version> 55 </dependency>

2. 进行数据转换:

  2.1 select可以获取HTML标签,类型为Elements;

  2.2 child(int index) 可以根据坐标获取子标签;

  2.3 text()可以获取便签内容。

1 1 // 解析返回数据 2 2 try { 3 3 Document doc = Jsoup.parse(result); 4 4 // 获取响应内容指定区域标签 5 5 Elements elements = doc.select(".BOC_main").select("tr"); 6 6 // 获取具体值 7 7 text = elements.get(1).child(6).text(); 8 8 } catch(Exception e) { 9 9 e.printStackTrace(); 1010 }

3. 抓取数据方法:

  其中,请求属性要根据实际情况修改。

1private static String getUrlInfo(String url, String methodType, String param){ 2 try { 3 URL url = new URL(urls); 4 HttpURLConnection conn = (HttpURLConnection) url.openConnection(); 5 // 设置连接超时时间 6 conn.setConnectTimeout(60000); 7 // 设置读取超时时间 8 conn.setReadTimeout(60000); 9 10 if("Get".equalsIgnoreCase(methodType)) { 11 conn.setRequestMethod("GET"); 12 }else { 13 conn.setRequestMethod("POST"); 14 } 15 16 // 设置请求属性 17 conn.setRequestProperty("Accept", "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8"); 18 conn.setRequestProperty("Connection", "keep-alive"); 19 conn.setRequestProperty("Content-Type", "application/x-www-form-urlencoded"); 20 conn.setRequestProperty("Host", "host"); 21 22 conn.setDoInput(true); 23 conn.setDoOutput(true); 24 // 设置是否使用缓存 25 conn.setUseCaches(false); 26 27 if(StringUtil.isNotBlank(param)) { 28 // 建立输入流,向指向的URL传入参数 29 DataOutputStream dos=new DataOutputStream(conn.getOutputStream()); 30 dos.writeBytes(param); 31 dos.flush(); 32 dos.close(); 33 } 34 35 // 输出返回结果 36 InputStream input = conn.getInputStream(); 37 int resLen =0; 38 byte[] res = new byte[1024]; 39 StringBuilder sb=new StringBuilder(); 40 while((resLen=input.read(res))!=-1){ 41 sb.append(new String(res, 0, resLen)); 42 } 43 return sb.toString(); 44 } catch (MalformedURLException e) { 45 e.printStackTrace(); 46 } catch (IOException e) { 47 e.printStackTrace(); 48 } 49 return ""; 50}
点赞
收藏

评论区

加载中...

相关推荐

MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1

文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s

Oracle 分组与拼接字符串同时使用

SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(

MySQL部分从库上面因为大量的临时表tmp_table造成慢查询

背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_

皕杰报表之UUID

​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为

手写Java HashMap源码

HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22

2020年前端实用代码段,为你的工作保驾护航

有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )