java操做html格式數據

近期在作數據抓取功能,抓取到的數據爲html格式,需在後臺進行轉換後取值,爲了不使用字符串查找方式獲取而使用Jsonp完美實現。html

1. 引入Jsonp:web

1 <dependency>
2     <groupId>org.jsoup</groupId>
3     <artifactId>jsoup</artifactId>
4     <version>1.11.2</version>
5 </dependency>

2. 進行數據轉換:緩存

  2.1 select能夠獲取HTML標籤,類型爲Elements;app

  2.2 child(int index) 能夠根據座標獲取子標籤;ui

  2.3 text()能夠獲取便籤內容。url

 1 // 解析返回數據
 2 try {  3     Document doc = Jsoup.parse(result);  4     // 獲取響應內容指定區域標籤
 5     Elements elements = doc.select(".BOC_main").select("tr");  6     // 獲取具體值
 7     text = elements.get(1).child(6).text();  8 } catch(Exception e) {  9  e.printStackTrace(); 10 }

3. 抓取數據方法:spa

  其中,請求屬性要根據實際狀況修改。code

private static String getUrlInfo(String url, String methodType, String param){ try { URL url = new URL(urls); HttpURLConnection conn = (HttpURLConnection) url.openConnection(); // 設置鏈接超時時間
        conn.setConnectTimeout(60000); // 設置讀取超時時間
        conn.setReadTimeout(60000); if("Get".equalsIgnoreCase(methodType)) { conn.setRequestMethod("GET"); }else { conn.setRequestMethod("POST"); } // 設置請求屬性
        conn.setRequestProperty("Accept", "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8"); conn.setRequestProperty("Connection", "keep-alive"); conn.setRequestProperty("Content-Type", "application/x-www-form-urlencoded"); conn.setRequestProperty("Host", "host"); conn.setDoInput(true); conn.setDoOutput(true); // 設置是否使用緩存
        conn.setUseCaches(false); if(StringUtil.isNotBlank(param)) { // 創建輸入流,向指向的URL傳入參數
            DataOutputStream dos=new DataOutputStream(conn.getOutputStream()); dos.writeBytes(param); dos.flush(); dos.close(); } // 輸出返回結果
        InputStream input = conn.getInputStream(); int resLen =0; byte[] res = new byte[1024]; StringBuilder sb=new StringBuilder(); while((resLen=input.read(res))!=-1){ sb.append(new String(res, 0, resLen)); } return sb.toString(); } catch (MalformedURLException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } return ""; } 
相關文章
相關標籤/搜索