使用jsoup抓取信息步驟 javascript
一、加入jsoup-1.6.2.jar php
二、準備好url html
三、創建鏈接--Jsoup.connect(url) java
四、解析html--Connection.get() node
package com.xing.jsoup; import java.io.IOException; import org.jsoup.Connection; import org.jsoup.Jsoup; import org.jsoup.nodes.Document; import org.jsoup.nodes.Element; import org.jsoup.select.Elements; import com.xing.crawl.LinkQueue; public class EasyCrawl { /** * @param args */ public static void main(String[] args) { String url = "http://kaoshi.edu.sina.com.cn/collegedb/collegelist.php?_action=t&provid=1" ; String baseUrl = "http://kaoshi.edu.sina.com.cn/"; EasyCrawl easyCrawl = new EasyCrawl(); easyCrawl.collegeTotalPage(url, baseUrl); } public void collegeTotalPage(String url , String baseUrl){ LinkQueue.addUnvisitedUrl(url); Document doc; try { Connection conn = Jsoup.connect(url); //設置超時時間 conn.timeout(5000); doc = conn.get(); Elements trs = doc.select("table.c_list tr"); Element lastTr = trs.get(trs.size()-1); if(lastTr.select(".pagebox_cur_page").size()==1){ Elements as = lastTr.select("a"); int length = as.size(); if(as!=null && length > 0){ for(int p=0 ; p< length-1 ; p++){ Element page = as.get(p); System.out.println(page.attr("href")); LinkQueue.addUnvisitedUrl(baseUrl+page.attr("href")); } } } } catch (IOException e) { e.printStackTrace(); } } }
註釋:這裏主要是抓取這個網頁table下面的分頁頁數以及鏈接,而且把這個鏈接地址保存起來,一邊後面的抓取。 api
詳細分析一下collegeTotalPage方法: url
(1)LinkQueue.addUnvisitedUrl(url)把抓取的數據添加到已經訪問的棧裏,一邊去分是否抓取,防止重複抓取。 spa
(2)Connection conn = Jsoup.connect(url);connect(String url) 方法建立一個新的 Connection。 code
(3)conn.timeout(5000)設置鏈接超時時間。 htm
(4) get() 取得和解析一個HTML文件,返回一個Document 對象。
(5)使用相似於CSS或jQuery的語法來查找和操做元素,而且解析裏面的url,添加到爲訪問的棧裏面。
備註:jsoup執行javascript
ScriptEngineManager manager = new ScriptEngineManager(); |
2 | ScriptEngine engine = manager.getEngineByName("JavaScript"); |
3 |
4 | engine.eval(new InputStreamReader(Login.class |
5 | .getResourceAsStream("/sha1.js"))); |
6 | Object t = engine.eval("CryptoJS.SHA1('" + password |
7 | + "').toString();"); |
8 | System.out.println(t); |
若是你不明白是怎麼解析出來的?請看漢語API http://www.open-open.com/jsoup/selector-syntax.htm