使用jsoup抓取信息步骤
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);connect(String url) 方法创建一个新的 Connection。
(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