偶然翻到很久以前的jsoup入门代码,现在只要一提爬虫就是python,其实java的爬虫框架jsoup也是很好用的。

jsoup他最大的特色就是,把爬取到的网页内容,解析成Document类,可以用类似jquery的语法去取需要的内容。

有java和jquery基础的话,学习陈本极低,基本上5分钟看个入门就可以学会。

直接贴上代码跑路。


maven导包

  1. <dependency>
  2. <groupId>org.apache.httpcomponents</groupId>
  3. <artifactId>httpclient</artifactId>
  4. <version>4.5.3</version>
  5. </dependency>
  6. <dependency>
  7. <groupId>org.jsoup</groupId>
  8. <artifactId>jsoup</artifactId>
  9. <version>1.10.2</version>
  10. </dependency>


java demo

  1. package com.bumblebee.demo;
  2.  
  3. import org.apache.http.HttpEntity;
  4. import org.apache.http.client.methods.CloseableHttpResponse;
  5. import org.apache.http.client.methods.HttpGet;
  6. import org.apache.http.impl.client.CloseableHttpClient;
  7. import org.apache.http.impl.client.HttpClients;
  8. import org.apache.http.util.EntityUtils;
  9. import org.jsoup.Jsoup;
  10. import org.jsoup.nodes.Document;
  11. import org.jsoup.nodes.Element;
  12. import org.jsoup.select.Elements;
  13. /**
  14.  * JSOUP demo
  15.  * @author bumblebee
  16.  */
  17. public class JSOUP {
  18. public static void main(String[] args) throws Exception {
  19. CloseableHttpClient httpclient = HttpClients.createDefault(); // 创建httpclient实例
  20. HttpGet httpget = new HttpGet("http://www.cnblogs.com/"); // 创建httpget实例
  21.  
  22. CloseableHttpResponse response = httpclient.execute(httpget); // 执行get请求
  23. HttpEntity entity = response.getEntity(); // 获取返回实体
  24. String content = EntityUtils.toString(entity, "utf-8");
  25. response.close(); // 关闭流和释放系统资源
  26.  
  27. Document doc = Jsoup.parse(content); // 解析网页 得到文档对象
  28. Elements elements = doc.getElementsByTag("title"); // 获取tag是title的所有DOM元素
  29. Element element = elements.get(0); // 获取第1个元素
  30. String title = element.text(); // 返回元素的文本
  31. System.out.println("网页标题是:" + title);
  32.  
  33. Element element2 = doc.getElementById("site_nav_top"); // 获取id=site_nav_top的DOM元素
  34. String navTop = element2.text(); // 返回元素的文本
  35. System.out.println("口号:" + navTop);
  36.  
  37. }
  38. }