A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

【郑州校区】使用Jsoup选择器获取数据

4.3.1知识概述
Jsoup 是一款Java 的HTML解析器,可直接解析某个URL地址、HTML文本内容。它提供了一套非常省力的API,可通过DOM,CSS以及类似于jQuery的操作方法来取出和操作数据。
[AppleScript] 纯文本查看 复制代码
<dependency>
    <!-- jsoup HTML parser library @ [url=https://jsoup.org/]https://jsoup.org/[/url] -->
    <groupId>org.jsoup</groupId>
    <artifactId>jsoup</artifactId>
    <version>1.10.3</version>
</dependency>
JSOUP的核心功能
l JSOUP的输入信息
字符串
文件
URL
l JSOUP抽取数据
使用Document语法进行解析数据
使用选择器的方式进行解析(学习对象)
如何使用Jsoup选择器获取数据
Jsoup elements对象支持类似于CSS(或jquery)的选择器语法,来实现非常强大和灵活的查找功能。.
这个select方法在Document,Element,或Elements对象中都可以使用。且是上下文相关的,因此可实现指定元素的过滤,或者链式选择访问。
Select方法将返回一个Elements集合,并提供一组方法来抽取和处理结果。
Selector选择器概述
Ø tagname: 通过标签查找元素,比如:a
Ø ns|tag: 通过标签在命名空间查找元素,比如:可以用 fb|name 语法来查找 元素
Ø id: 通过ID查找元素,比如:#logo
Ø class: 通过class名称查找元素,比如:.masthead
Ø [attribute]: 利用属性查找元素,比如:[href]
Ø [^attr]: 利用属性名前缀来查找元素,比如:可以用[^data-] 来查找带有HTML5 Dataset属性的元素
Ø [attr=value]: 利用属性值来查找元素,比如:[width=500]
Ø [attr^=value], [attr$=value], [attr=value]: 利用匹配属性值开头、结尾或包含属性值来查找元素,比如:[href=/path/]
Ø [attr~=regex]: 利用属性值匹配正则表达式来查找元素,比如: img[src~=(?i).(png|jpe?g)]
Ø *: 这个符号将匹配所有元素
Ø Seector选择器组合使用
Ø el#id: 元素+ID,比如: div#logo
Ø el.class: 元素+class,比如: div.masthead
Ø el[attr]: 元素+class,比如: a[href]
Ø 任意组合,比如:a[href].highlight
Ø ancestor child: 查找某个元素下子元素,比如:可以用.body p 查找在"body"元素下的所有 p元素
Ø parent > child: 查找某个父元素下的直接子元素,比如:可以用div.content > p 查找 p 元素,也可以用body > 查找body标签下所有直接子元素
Ø siblingA + siblingB: 查找在A元素之前第一个同级元素B,比如:div.head + div
Ø siblingA ~ siblingX: 查找A元素之前的同级X元素,比如:h1 ~ p
Ø el, el, el:多个选择器组合,查找匹配任一选择器的唯一元素,例如:div.masthead, div.logo
伪选器selectors
Ø :lt(n): 查找哪些元素的同级索引值(它的位置在DOM树中是相对于它的父节点)小于n,比如:td:lt(3) 表示小于三列的元素
Ø :gt(n):查找哪些元素的同级索引值大于n,比如: div p:gt(2)表示哪些div中有包含2个以上的p元素
Ø :eq(n): 查找哪些元素的同级索引值与n相等,比如:form input:eq(1)表示包含一个input标签的Form元素
Ø :has(seletor): 查找匹配选择器包含元素的元素,比如:div:has(p)表示哪些div包含了p元素
Ø :not(selector): 查找与选择器不匹配的元素,比如: div:not(.logo) 表示不包含 class=logo 元素的所有 div 列表
Ø :contains(text): 查找包含给定文本的元素,搜索不区分大不写,比如: p:contains(jsoup)
Ø :containsOwn(text): 查找直接包含给定文本的元素
Ø :matches(regex): 查找哪些元素的文本匹配指定的正则表达式,比如:div:matches((?i)login)
Ø :matchesOwn(regex): 查找自身包含文本匹配指定正则表达式的元素
Ø 注意:上述伪选择器索引是从0开始的,也就是说第一个元素索引值为0,第二个元素index为1等
4.3.2视频详情
4.3.3总结与补充
        Document的结构
4.3.4课堂提问与练习
        无
4.3.5习题答案
        无
传智播客·黑马程序员郑州校区地址
河南省郑州市 高新区长椿路11号大学科技园(西区)东门8号楼三层
联系电话 0371-56061160/61/62
来校路线  地铁一号线梧桐街站A口出

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马