根掘り葉掘り聞く--技術--jsoup簡単にデータをつかむ
2657 ワード
jsoupを使用して情報をキャプチャするには
1、jsoup-1.6.2.jarを加入する
2、urlを用意する
3、接続を確立する--Jsoup.connect(url)
4.html--Connection.get()の解析
注記:ここでは主にこのページtableの下のページ数と接続をキャプチャし、この接続アドレスを保存しながら、後ろのキャプチャを行います.
collegeTotalPageメソッドを詳しく分析します.
(1)LinkQueue.addUnvisitedUrl(url)は,すでにアクセスしているスタックにキャプチャしたデータを追加しながら,キャプチャするか否かを区別し,繰返しキャプチャを防止する.
(2)Connection conn = Jsoup.connect(url);接続(String url)メソッドは、新しい接続を作成します.
(3)conn.timeout(5000)接続タイムアウト時間を設定します.
(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
1、jsoup-1.6.2.jarを加入する
2、urlを用意する
3、接続を確立する--Jsoup.connect(url)
4.html--Connection.get()の解析
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の下のページ数と接続をキャプチャし、この接続アドレスを保存しながら、後ろのキャプチャを行います.
collegeTotalPageメソッドを詳しく分析します.
(1)LinkQueue.addUnvisitedUrl(url)は,すでにアクセスしているスタックにキャプチャしたデータを追加しながら,キャプチャするか否かを区別し,繰返しキャプチャを防止する.
(2)Connection conn = Jsoup.connect(url);接続(String url)メソッドは、新しい接続を作成します.
(3)conn.timeout(5000)接続タイムアウト時間を設定します.
(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