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>
小插曲:在构建maven项目时下载jar包速度非常的慢,可以采用阿里云的仓库,速度快的不是一点
具体方法:
将maven安装目录conf下得settings.xml 文件拷贝到/.m2文件夹下,并在其中的
<mirrors></mirrors>标签中增加如下代码:
1 <mirror> 2 <id>nexus-aliyun</id> 3 <mirrorOf>central</mirrorOf> 4 <name>Nexus aliyun</name> 5 <url>http://maven.aliyun.com/nexus/content/groups/public</url> 6 </mirror>
然后重启eclipse即可快速构建项目。
pom.xml文件中增加jsoup与httpclient依赖
1 <dependency> 2 <groupId>org.apache.httpcomponents</groupId> 3 <artifactId>httpclient</artifactId> 4 <version>4.5.5</version> 5 </dependency> 6 7 <dependency> 8 <groupId>org.jsoup</groupId> 9 <artifactId>jsoup</artifactId> 10 <version>1.11.2</version> 11 </dependency>
获取博客园首页内容实例代码:
1 package com.zhjxtf.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 public static void main(String[] args) throws Exception{ 16 CloseableHttpClient httpClient = HttpClients.createDefault();//创建httpclient实例 17 HttpGet httpHet = new HttpGet("https://www.cnblogs.com/");//创建httpGet实例 18 CloseableHttpResponse response = httpClient.execute(httpHet);//执行get请求 19 HttpEntity httpEntity = response.getEntity();//获取返回的实体 20 //System.out.println("网页的内容是: "+EntityUtils.toString(httpEntity, "utf-8"));//指定编码,并打印网页的内容 21 String content = EntityUtils.toString(httpEntity, "utf-8"); 22 Document doc = Jsoup.parse(content); //解析网页得到文档对象 23 Elements elements = doc.getElementsByTag("title");//获取标题 24 Element elementTitle = elements.get(0);//获取第一个元素 25 System.out.println(elementTitle.text()); //返回文本元素 26 System.out.println(elementTitle.html()); //返回html元素 27 Element element2 =doc.getElementById("site_nav_top");//根据id获取元素并进行操作 28 System.out.println(element2.text()); //返回元素的文本 29 System.out.println(element2.html()); //返回html元素 30 response.close();//关闭流释放系统资源 31 } 32 }
Jsoup查找DOM元素:
getElementsByTag(String tagName) 根据tag名称查找Dom元素
getElementById(String id)根据id名称查找Dom元素
getElementsByClass(String className) )根据样式名称查找Dom元素
getElementsByAttribute(String key)根据属性名称查找Dom元素
getElementsByAttributeValue(key, value)根据属性名称和属性值查找DOM元素
我的笔记博客版权我的笔记博客版权