(一)问候 Jsoup
第一节: Jsoup 简介
Jsoup简介
jsoup 是一款Java 的HTML解析器,可直接解析某个URL地址、HTML文本内容。它提供了一套非常省力的API,可通过DOM,CSS以及类似于jQuery的操作方法来取出和操作数据。
我们在爬虫采集网页领域 主要作用是 用HttpClient获取到网页后 具体的网页提取需要的信息的时候 ,就用到Jsoup,Jsoup可以使用强大的类似Jquery,css选择器,来获取需要的数据;
Jsoup官方地址:https://jsoup.org/
Jsoup最新下载:https://jsoup.org/download
Jsoup文档:https://jsoup.org/cookbook/introduction/parsing-a-document
最新版Maven地址:
1 <dependency> 2 <groupId>org.jsoup</groupId> 3 <artifactId>jsoup</artifactId> 4 <version>1.10.2</version> 5 </dependency>
第二节: Jsoup HelloWorld 实现
Jsoup HelloWorld实现
我们用Jsoup来提取下http://www.cnblogs.com/ 博客园的 网页title 标题 和 口号;
这里我们要用到前面讲的HttpClient来获取网页内容:
pom.xml:
1 <!-- 添加HttpCient支持 --> 2 <dependency> 3 <groupId>org.apache.httpcomponents</groupId> 4 <artifactId>httpclient</artifactId> 5 <version>4.5.2</version> 6 </dependency> 7 8 <!-- 添加Jsoup支持 --> 9 <dependency> 10 <groupId>org.jsoup</groupId> 11 <artifactId>jsoup</artifactId> 12 <version>1.10.2</version> 13 </dependency>
实例代码:
1 package com.javaxk.jsoup; 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 public class Demo01 { 15 16 public static void main(String[] args) throws Exception{ 17 CloseableHttpClient httpclient = HttpClients.createDefault(); // 创建httpclient实例 18 HttpGet httpget = new HttpGet("http://www.cnblogs.com/"); // 创建httpget实例 19 20 CloseableHttpResponse response = httpclient.execute(httpget); // 执行get请求 21 HttpEntity entity=response.getEntity(); // 获取返回实体 22 String webContent=EntityUtils.toString(entity, "utf-8"); 23 // System.out.println("网页内容:"+webContent); // 指定编码打印网页内容 24 response.close(); // 关闭流和释放系统资源 25 26 Document doc=Jsoup.parse(webContent); // 解析网页 得到文档对象 27 Elements elements=doc.getElementsByTag("title");// 获取tag是title的所有DOM元素 28 Element element=elements.get(0);// 获取第1个元素 29 String title=element.text(); // 返回元素的文本 30 System.out.println("网页标题是:"+title); 31 32 Element element2=doc.getElementById("site_nav_top");// 获取id=site_nav_top的DOM元素 33 String navTop=element2.text();// 返回元素的文本 34 System.out.println("口号:"+navTop); 35 } 36 37 }
运行输出:
网页标题是:博客园 - 开发者的网上家园
口号:代码改变世界