java+Jsoup 正則過濾html網頁標籤【多執行緒資料採集之二】
java採集資料,獲取了 html整個文字之後。
該考慮的是如何過濾掉html標籤, 得到自己所需要的重要資料了。
實現方法有多種辦法,第一:用正則,第二:用第三方jar包,其實本質也是封裝了正則表示式
今天就以 Jsoup 第三方jar包來講解。
現在貼上一個網頁過濾的方法例項
- //門票瀏覽 url引數 http://www.lvmama.com/dest/lantiancheng
- publicstatic DataBean getWebData1(String url){
- DataBean data = null;
-
try {
- Document docdata = Jsoup.connect(url).timeout(20000).get();
- String id = ".quick-menu .last a";
- String city = ".proDetail a";
- String title = ".proDetail h1";
- String content = "#Introduction";
-
Elements ele = docdata.select(city);
- city = (ele.text());
- ele = docdata.select(title);
- title = (ele.text()).replace("<", "").replace(">", "").replace("\\/", "");
- ele = docdata.select(content);
- content = (ele.text());
- ele = docdata.select(id);
-
String[] idary = ele.attr("href"
- id = idary[idary.length-1];
- String type = "景點門票";
- List<String> images = new ArrayList<String>();
- data = new DataBean(id,title,url,content,type,city,images);
- Dom4jUtil.createFile("data/["+type+"]"+title+".xml", Dom4jUtil.createDocument(data));
- type = "景點評論";
- content = ".userComments dl dd:eq(3)";
- ele = docdata.select(content);
- content = "";
- int i = 1;
- for (Element el : ele) {
- content += ("|第"+i+":"+el.text());
- i++;
- }
- data = new DataBean(id,title,url,content,type,city,images);
- //用xml儲存資料
- Dom4jUtil.createFile("data/["+type+"]"+title+".xml", Dom4jUtil.createDocument(data));
- } catch (Exception e) {
- e.printStackTrace();
- }
- return data;
- }
整個過程分為幾部
1、 獲取頁面的節點物件
- Document docdata = Jsoup.connect(url).timeout(20000).get();
2、建立選擇器,選擇頁面節點物件的 text 或 html 。 選擇方式跟jquery非常類似。
例如:
String title = ".proDetail h1";
ele = docdata.select(title);
這個就是用來選擇 class = proDetail 下 h1 標籤的物件。通過 ele.text() 就得到了標籤中的文字。
- Document docdata = Jsoup.connect(url).timeout(20000).get();
- String id = ".quick-menu .last a";
- String city = ".proDetail a";
- String title = ".proDetail h1";
- String content = "#Introduction";
- Elements ele = docdata.select(city);
- city = (ele.text());
- ele = docdata.select(title);
- title = (ele.text()).replace("<", "").replace(">", "").replace("\\/", "");
- ele = docdata.select(content);
- content = (ele.text());
- ele = docdata.select(id);
- String[] idary = ele.attr("href").split("\\/");
- id = idary[idary.length-1];
3、通過獲取的資料,構造java資料物件 。 然後存入xml或txt檔案。 如果有需要也可以存入資料庫啦。
- String type = "景點門票";
- List<String> images = new ArrayList<String>();
- data = new DataBean(id,title,url,content,type,city,images);
- Dom4jUtil.createFile("data/["+type+"]"+title+".xml", Dom4jUtil.createDocument(data));
走完這3部,就算是從html原始碼檔案中取到了 我們需要的資料了。
java採集資料過濾html標籤,獲取指定資料,就搞定了
相關推薦
java+Jsoup 正則過濾html網頁標籤【多執行緒資料採集之二】
java採集資料,獲取了 html整個文字之後。 該考慮的是如何過濾掉html標籤, 得到自己所需要的重要資料了。 實現方法有多種辦法,第一:用正則,第二:用第三方jar包,其實本質也是封裝了正則表示式 今天就以 Jsoup 第三方jar包來講解。 現在貼上
php正則過濾html標籤、空格、換行
$str=preg_replace("/\s+/", " ", $str); //過濾多餘回車 $str=preg_replace("/<[]+/si","<",$str);//過濾<__("<"號後面帶空格) $str=preg_replace("/<\!--.*?-->
通過正則過濾html標籤
publicstatic String delHtml(String inputString) { String htmlStr = inputString; // 含html標籤的字串 String textStr =""; java.util.regex.Patt
java多執行緒系列翻譯之java併發/多執行緒教程
原文地址:http://tutorials.jenkov.com/java-concurrency/index.html 以前計算機都是單核,同時只能執行一個程式。之後出現了多重任務處理,這意味著計算機同時可以處理多個程式(又名任務或流程)。但這不是真正的“同時執行”,只是單個CPU被多個程式共
【多執行緒】在專案中用JAVA使用多執行緒
一,初衷 因為在學習java基礎的時候,學習過兩種實現多執行緒的方法。今天在看一個文章的時候,看到了別人在專案中執行多執行緒。想到自己還沒用過,所以將別人的使用方法記錄下來,方便以後自己在專案中呼叫多執行緒可以嘗試一下。 二,多執行緒的實現 2.1 繼
java多執行緒快速入門(二十一)
CountDownLatch(閉鎖)計數器 有一個任務A,它要等待其他4個任務執行完畢之後才執行,此時就可以利用CountDownLatch來實現這種功能 package com.cppdy; import java.util.concurrent.CountDownLatch
java多執行緒快速入門(二十二)
執行緒池的好處: 避免我們過多的去new執行緒,new是佔資源的(GC主要堆記憶體) 提高效率 避免浪費資源 提高響應速度 作用:會把之前執行某個執行緒完畢的執行緒不會釋放掉會留到執行緒池中給下一個呼叫的執行緒直接使用 前提:AB執行緒在同一個執行緒池裡面;A執行緒執行完畢了,B執
Java——多執行緒基本使用(二)
在學習多執行緒時,如果聯絡作業系統來學習,會覺得很好理解。因為學習作業系統時候,有同步,互斥,鎖的一些概念~ 給個連結到上一篇~https://blog.csdn.net/zoweiccc/article/details/83002176 8.加入執行緒 &n
Java多執行緒程式設計核心技術(二)物件及變數的併發訪問
最近一直在忙比賽,四五個吧,時間有點緊張,部落格也沒時間更新~ 只能忙裡抽閒 本文屬於Java多執行緒程式設計系列的第二篇,旨在分享我對多執行緒程式設計技術的心得與感悟,順便做下筆記。 如果你閱讀完比較感興趣,歡迎關注我,等待更新後續篇章。 本文主要介紹Java多執行緒中的同步,也就是如何在Java語言中
Java 多執行緒設計模式之基礎概念
順序、併發與並行 順序 用於表示多個操作“依次處理”。比如把十個操作交給一個人來處理時,這個人要一個一個地按順序來處理 並行 用於標識多個操作“同時處理”。比如十個操作分給兩個人處理時,這兩個人就會並行來處理。 併發 相對於順序和並行來說比較抽象,用於表示“將一個
Java面向物件與多執行緒綜合實驗(二)之 異常處理
理解異常的基本概念;瞭解Java異常的層次結構;熟悉並掌握Java異常的捕獲處理方法。 (1)閱讀Java™ Platform, Standard Edition 8 API Specification文件,瞭解後續程式設計中將要處理的IOException及其子類FileNotFoundE
java多執行緒案例1之簡單銀行取款問題及其優化
之前學java的時候,學校老師由於課時問題,沒有教我們多執行緒,最近學校外聘的企業教師給我們做實訓要用到多執行緒,因此才初步瞭解多執行緒,以下這個案例只是介紹java程式碼優化,程式碼中有涉及多執行緒,但今天不對其講解,只簡單講解程式碼優化的問題,希望對初學者有幫
JAVA基礎22-多執行緒(一)【多執行緒的概念,執行緒狀態及其轉換】
多執行緒 一.概念 1. 程序:程序是表示資源分配的的基本概念,又是排程執行的基本單位,是系統中的併發執行的單位。 2. 執行緒:單個程序中執行中
《瘋狂Java講義(第4版)》-----第16章【多執行緒】(執行緒通訊、執行緒池)
執行緒通訊 傳統的執行緒通訊 用synchonized同步的情況下,可以使用Object的三個方法: wait():釋放同步監視器,直到其他執行緒呼叫該同步監視器的notify()或notifyAll()方法 notify():喚醒此同步監視器上等待的單個執行緒
《瘋狂Java講義(第4版)》-----第16章【多執行緒】(控制執行緒、執行緒同步)
控制執行緒 join執行緒 等那個執行緒做完後,當前執行緒再做! import java.lang.Thread; public class MyThread extends Thread{ public MyThread(String name){ super(
《瘋狂Java講義(第4版)》-----第16章【多執行緒】(執行緒的建立及生命週期)
執行緒的獨立執行的,他並不知道程序是否還有其他執行緒存在 當作業系統建立一個程序時,必須為該程序分配獨立的記憶體空間,並分配大量的相關資源;但建立一個執行緒則簡單得多,因此使用多執行緒來實現併發比使用多程序實現併發的效能要高得多 多執行緒是非常有用的,一個瀏覽器必須能
Java多執行緒與併發(二)
Synchronized執行緒同步機制 很多執行緒同時對同一個資料或者檔案進行訪問的時候,對於這個檔案如果進行併發讀寫可能會產生問題。 多執行緒機制來保證同一個時間,只有一個執行緒對這個資源進行讀寫,來保證多執行緒環境下是健壯的。 程式碼案例:
一、Java多執行緒併發同步之Semaphore
概念 Semaphore是一種在多執行緒環境下使用的設施,該設施負責協調各個執行緒,用來管理資源,以保證它們能夠正確、合理的使用公共資源的設施,也是作業系統中用於控制程序同步互斥的量。用我們常見的說法就是用來控制併發數。 訊號量是一個非負整數 。 業務場景 以售
java多執行緒程式設計入門之鎖的使用
package com.CUPK.lsz.TraditionalThread; //實現互斥的第一種方法:作為定義詞修飾程式碼 public class TraditonalThreadSynchronized1 { final Outputer outputer = new Outputer(
二、Java多執行緒併發同步之CyclicBarrier
概述 CyclicBarrier:可迴圈屏障,允許一組執行緒全部等待的同步輔助工具。一組執行緒互相等待,直到所有執行緒都到達某個公共屏障點(也可以叫同步點) 。它可以在等待執行緒之後重新使用。這個屏障之所以用迴圈修飾,是因為在所有的執行緒釋放彼此之後,這個屏障是