×

宗老湿自学Jsoup

我的笔记 我的笔记 发表于2018-07-23 21:26:06 浏览3156 评论2

2人参与发表评论

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元素

 

我的笔记博客版权我的笔记博客版权