2013-01-18 20:15:35.0|分类: struts源码分析|浏览量: 1299
使用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
如果你不明白是怎么解析出来的?请看汉语API http://www.open-open.com/jsoup/selector-syntax.htm |