Java爬虫技术之Jsoup学习笔记

                第一节 Jsoup简介

一、jsoup 是一款Java 的HTML解析器,可直接解析某个URL地址、HTML文本内容。它提供了一套非常省力的API,可通过DOM,CSS以及类似于jQuery的操作方法来取出和操作数据。

二、创建maven项目

pom添加jar包

 <!-- https://mvnrepository.com/artifact/org.apache.httpcomponents/httpclient -->
       <dependency>
          <groupId>org.apache.httpcomponents</groupId>
          <artifactId>httpclient</artifactId>
          <version>4.5.2</version>
       </dependency>
       
       <!-- https://mvnrepository.com/artifact/org.jsoup/jsoup -->
       <dependency>
         <groupId>org.jsoup</groupId>
         <artifactId>jsoup</artifactId>
         <version>1.8.3</version>
       </dependency>

以博客园为例

结果

错误:

Description      Resource Path Location   Type

Missing artifact commons-codec:commons-codec:jar:1.10   pom.xml  /Jsoup      line 1         Maven Dependency Problem

解决:加个<dependencyManagement>标签

<dependencyManagement>

<dependencies>

    依赖包

</dependencies>

</dependencyManagement>

 

                                          第二节 Jsoup查找DOM元素

getElementById(String id) 根据 id 来查询 DOM

 getElementsByTag(String tagName) 根据 tag 名称来查询 DOM

getElementsByClass(String className) 根据样式名称来查询 DOM getElementsByAttribute(String key) 根据属性名来查询 DOM getElementsByAttributeValue(String key,String value) 根据属性名和属性值来查询 DOM

 

仍以博客园为例

1、getElementsByClass(String className) 根据样式名称来查询 DOM

每个poet_item 对应一个博客标题

代码如下

结果

2、getElementsByAttribute(String key) 根据属性名来查询 DOM

圆圈标的是属性名,横线标的是属性值

3、getElementsByAttributeValue(String key,String value) 根据属性名和属性值来查询 DOM

会爬到属性名所在的 标签及标签的全部属性

 

              第三节 Jsoup使用选择器语法查找DOM

查找有层级关系的,比如div 下嵌套多个div

Id 前加#  class属性的话 前加.   标签前什么都不加

1、获取所有博客的标题链接

要怎么获取<a>标签href 的链接呢 看第四节

2、

a[href] 带有href属性的a标签

img[src$=.png]  后缀为png 的 图片标签

3、获取集合第一个元素

以前用的是 get(0)

Elements elements=doc.getElementsByTag("title"); // 获取tag是title的所有DOM元素

Element element=elements.get(0); // 获取第1个元素

 

现在用的是封装的一个方法first()

Element element=doc.getElementsByTag("title").first();

当然对应的还有last

 

               第四节 Jsoup 获取DOM元素属性值

1、怎么获取a标签的href属性 的 属性值

.text() 纯文本 把html去掉

.html() 获取html包括文本

猜你喜欢

转载自www.cnblogs.com/guo7533/p/8910542.html