-
这个简易的爬虫需要jsoup包,一个java的第三方包
jsoup包有什么作用(在这个简易的爬虫程序中)?
在这个简易的程序中,所需要的是jsoup包中的
1 2 3 4 5 6
| import org.jsoup.Jsoup; import org.jsoup.nodes.Document; import org.jsoup.nodes.Element; import org.jsoup.select.Elements; 这几个类。 主要是解析网页中的标签,直接抽取网页链接
|
代码如下
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42
| import java.io.IOException; import org.jsoup.Jsoup; import org.jsoup.nodes.Document; import org.jsoup.nodes.Element; import org.jsoup.select.Elements; public class DocOperate { UrlOperate urlGet=new UrlOperate(); public void LinkAcquisition(String url) throws IOException { urlGet.ArrayAdd(url); System.out.println(url); Document doc; try { doc = Jsoup.connect(url).timeout(5000).get(); Elements links = doc.select("a[href]"); for (Element link : links) { String linkHref = link.attr("abs:href"); if(linkHref!=""){ urlGet.LinkedAdd(linkHref);} } LinkRepeatJudgment(); } catch (Exception e) { LinkRepeatJudgment(); e.printStackTrace(); } } public void LinkRepeatJudgment() throws IOException { if(!urlGet.IsEmpty()){ String url=urlGet.GetUrl(); urlGet.Remove(url); if(urlGet.CompareUrl(url)){ LinkRepeatJudgment(); }else{否则执行链接重复判断 LinkAcquisition(url);} }else{ System.out.println("game over"); } } }
|
以上是工具类,主要用于抓取网页链接。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
| import java.util.ArrayList; import java.util.LinkedList; public class UrlOperate { private LinkedList<String> linked=new LinkedList<String>(); private ArrayList<String> arry=new ArrayList<String>(); public void LinkedAdd(String url){ linked.add(url); } public void Remove(String url){ linked.remove(url); } public String GetUrl(){ return linked.getFirst(); } public boolean IsEmpty(){ return linked.isEmpty(); } public LinkedList<String> getHash(){ return linked; } public void ArrayAdd(String url){ arry.add(url); } public boolean CompareUrl(String url){ return arry.contains(url); } }
|
以上代码为网页链接的存取以及判断是否被爬取,对象类。
1 2 3 4 5 6 7 8 9
| import java.io.IOException; public class Spider { public static void main(String args[]) throws IOException{ String line=null; String url="http://mrnoknow.github.io/"; DocOperate operate=new DocOperate(); operate.LinkAcquisition(url); } }
|
完成。