jsoup是一款簡單好用的頁面解析工具,百度可以找到中文教程,我這里只是作為個人筆記的總結。
首先是下載jar包,有三個在頁面:https://jsoup.org/download 處可以找到下載.下載好了放進項目里就好
然后構建一個普通的javaSE項目。。。
獲取頁面之前首先第一步應該是了解DOM結構,這里不深入說明。
然后就是這個工具的繼承關系:Document
繼承Element
繼承Node
. TextNode
繼承 Node
然后我們開始做第一步操作document對象
public void test1(){ //暫時用字符串代替從頁面取來的dom結構 String html= "<html><head><title>First parse</title></head><body><p id='hehe'>Parsed HTML into a doc.</p></body></html>"; //解析字符串獲得document對象 Document doc=Jsoup.parse(html); //從doc對象中取得id為hehe的元素然后獲取其中的文字值 System.out.println(doc.getElementById("hehe").text()); //從doc對象中取得id為hehe的元素然后獲取其中的html對象 System.out.println(doc.getElementById("hehe").html()); //從doc對象中取得id為hehe的元素然后回溯出整體 System.out.println(doc.getElementById("hehe").root()); //你可以把document對象看做后台版的js,通過class找,name找甚至利用jQuery都是支持的 }
通過第一步主要熟悉了操作這個對象,然后的話我們進入第二步,從網頁中獲取信息。
很遺憾的是我當時在操作官方的學習文檔時發現他丫居然放了個反爬蟲鏈接,導致鏈接超時,所以我就寫了這篇日志。第一步找到一個可爬的站點。然后開始爬。
public void test2(){ try { Document doc=Jsoup.connect("http://www.jb51.net") .data("query", "java")
.userAgent("Chrome")
.cookie("auth", "token")
.timeout(3000)
.post(); System.out.println(doc.getElementById("trigger").text()); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } }
目前這個站點是可以爬的,不然你們可以試試其他的~~~~這里面有請求,瀏覽器,cookie,請求時間,請求方式等設置,你高興的話.get()也是足夠訪問的。但是不設置時間容易受網絡影響報錯
然后我們開始爬本機的html
//解析本地文件為dom文檔 public void test3(){ //文件路徑轉化為輸入流對象 File input = new File("/tmp/input.html"); try { //解析輸入流為dom對象。第三個為路徑的頭 Document doc = Jsoup.parse(input, "UTF-8",""); System.out.println(doc); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } }
到這里一個簡單的爬蟲就弄好了。