jsoup是一款Java的html解析工具,主要是对html和xml文件进行解析
在写爬虫的时候,当我们用HttpClient之类的框架,得到目标网页的源码后,需要从网页源码中取得我们想要的内容。就可以使用jsoup轻松获取想要的内容。

jsoup的中文开发文档

获取jsoup的maven方式

<dependency><groupId>org.jsoup</groupId><artifactId>jsoup</artifactId><version>1.11.3</version>
</dependency>

URL获取HTML来解析

// 方式一
Document document = Jsoup.connect("http://www.baidu.com/").get();
// 方式二
Document parse = Jsoup.parse(new URL("http://www.baidu.com/"), 1000 * 10);

其中Jsoup.connect(“xxx”)方法返回一个org.jsoup.Connection对象。
在Connection对象中,我们可以执行get和post来执行请求。但在执行请求之前,我们可以使用Connection对象来设置一些请求信息。比如:头信息,cookie,请求等待时间,代理等等模拟浏览器行为。

Document document = Jsoup.connect("http://www.baidu.com/").data("wd","我").userAgent("Mozilla").cookie("auth","token").timeout(3000).post();

从文件中获取html来解析

Document path = Jsoup.parse(new File("path"), "utf-8");

接从字符串中获得html来解析

Document text = Jsoup.parse("");

通过Document获取指定节点Element对象
通过方法来查找指定的节点Element

// 通过元素id值来获取对应的节点
Element element = document.getElementById(String  id);// 通过标签名来获取
Elements elements = document.getElementsByTag(String tagName);// 通过类名来获取
Elements elements = document.getElementsByClass(String className);// 通过属性名来获取
Elements elements = document.getElementsByAttribute(String key);// 通过指定属性名称和属性值来获取节点对象
Elements elements = document.getElementsByAttributeValue(String key, String value);// 获取所有节点元素
Elements elements = document.getAllElements();

通过类似于css或者jQuery的选择器来查找元素

    public Elements select(String cssQuery) {return Selector.select(cssQuery, this);}File input = new File("/tmp/input.html");Document doc = Jsoup.parse(input, "UTF-8", "http://example.com/");//带有href属性的a元素Elements links = doc.select("a[href]");//扩展名为.png的图片Elements pngs = doc.select("img[src$=.png]");//class等于masthead的div标签Element masthead = doc.select("div.masthead").first();//在h3元素之后的a元素    Elements resultLinks = doc.select("h3.r > a"); 

通过传入一个类似于css或者jQuery的选择器字符串,来查找指定元素
选择器中更多语法可以在org.jsoup.select.Selector中查看到更多关于选择器的语法

Selector中的语法简介
tagName:通过标签名查找元素,比如:a
ns|tag:通过标签在命名空间查找元素,比如:可以用fb|name语法来查找<fb:name>元素
#id:通过ID来查找元素,比如#logo
.class:通过class名称来查找元素 比如.master
[attribute]:利用属性名称来查找元素,如[href]
[^attribute]:利用属性前缀来查找元素,比如:可以用[^data-]来查找带有HTML中以data-开头的属性节点
[attr=value]:利用属性值来查找元素,比如:[width=500]
[attr~=regx]:利用属性值匹配正则表达式来查找元素,比如:img[src~=(?i).(png|jpe?g)]
*:这个符号将匹配所有元素

Selector选择器组合使用
el#id:元素+ID,比如:div#logo
el.class:元素+class,比如:div.master
el[attr]:元素+attr,比如:a[href]  任意组合,比如:a[href].heightlight
ancestor 空格 child:查找某个元素下的子元素,比如:可以用body p查找body下的所有p标签
parent > child:查找某个父元素下的直接元素,比如:可以用div.content > p查找class是content的div中所有的p标签
siblingA + siblingB:查找标签A下的第一个B标签,比如:div.head + div
siblingA ~ siblingB:查找siblingA同级第一个B标签,比如:h1 ~ p
el,el,el:多个选择器组合,查找匹配任一选择器的唯一元素,例如:div.master,div.logo

Selector伪类选择器
tag:lt(n):查找所有小于给定索引值的元素,从0开始计数,比如tr:lt(2)
tag:gt(n):查找所有大于给定索引值的元素,从0开始计数,比如tr:gt(2)
tag:eq(n):查找给定索引值的元素,比如tr:eq(2)
tag:has(seletor):查找匹配选择器包含元素的元素,比如:div:has§表示哪些div包含p元素
tag:not(seletor):查找于选择器不匹配的元素,比如:div:not(.logo)表示不包含class=”logo“元素的所有div列表
tag:contains(text):查找包含给定文本元素,搜索不区分大小写,比如:p:contains(jsoup)
tag:containsOwn(text):查找直接包含指定文本的元素
tag:matches(regex):查找自身包含文本匹配指定的元素

通过上面的选择器,我们可以取得一个Elements对象中,它继承了ArrayList对象,里面放的全是Element对象。使用Element获得想要的内容

使用Element获得想要的内容

// 这个方法用来获取一个元素中的文本
element.text()// 这个方法用来获取一个元素中的html内容
element.html()或Node.outerHtml()// 这个方法来取得一个元素的一个属性值
Node.attr(String key)
public class JsoupMain {public static void main(String[] args) {try {Document document = Jsoup.connect("http://www.baidu.com/").data("wd","我").userAgent("Mozilla").cookie("auth","token").timeout(3000).post();Elements elements = document.select("a");elements.forEach(element -> {System.out.println(element.text());});} catch (IOException e) {e.printStackTrace();}}
}

原文链接:https://blog.csdn.net/justLym/article/details/105715516

jsoup 使用教程相关推荐

  1. jsoup爬虫教程技巧_Jsoup V的幕后秘密:优化的技巧和窍门

    jsoup爬虫教程技巧 我们已经把事情做好了,现在是时候加快工作速度了. 我们会牢记Donald Knuth的警告:"大约97%的时间我们应该忘记效率低下:过早的优化是万恶之源". ...

  2. Java爬虫之JSoup使用教程

    title: Java爬虫之JSoup使用教程 date: 2018-12-24 8:00:00 +0800 update: 2018-12-24 8:00:00 +0800 author: me c ...

  3. 可能是稀土掘金最好学的jsoup示范教程

    每一个内容丰富的app背后都有一个庞大的数据库作为支撑 那是不是意味着没有强大团队的的我们就与开发 内容丰富的app无缘了呢 并不是,别忘了我们还有取之不尽用之不绝的资源宝库--互联网 我们可以使用爬 ...

  4. java pa——jsoup使用教程

    目录 一.jsoup入门 1.1 org.jsoup.Jsoup类 1.2 org.jsoup.nodes.Document类 1.2.1 DOM 1.2.2 CSS选择器 1.3 org.jsoup ...

  5. Jsoup:使用Java将爬虫得到的数据写入Excel,Jsoup得到的数据进行持久化,爬虫数据保存到本地Excel中

    Jsoup:使用Java将爬虫得到的数据写入Excel,Jsoup得到的数据进行持久化,爬虫数据保存到本地Excel中 一.资源 EasyExcel使用教程 Jsoup爬虫教程 二.代码 xml依赖 ...

  6. jsoup Java HTML解析器

    jsoup is an open source Java HTML parser that we can use to parse HTML and extract useful informatio ...

  7. 用WebCollector制作一个爬取《知乎》并进行问题精准抽取的爬虫(JAVA)

    简单介绍: WebCollector是一个无须配置.便于二次开发的JAVA爬虫框架(内核),它提供精简的的API.仅仅需少量代码就可以实现一个功能强大的爬虫. 怎样将WebCollector导入项目请 ...

  8. JSOUP 教程—— Java爬虫,简易入门,秒杀htmlparser

    转载自 JSOUP 教程-- Java爬虫,简易入门,秒杀htmlparser 关于爬虫,之前一直用做第一个站的时候,记得那时候写的 爬虫  是爬sina 的数据,用的就是 htmlparser  可 ...

  9. java jsoup爬取动态网页_java通过Jsoup爬取网页(入门教程)

    一,导入依赖 org.jsoup jsoup 1.10.3 org.apache.httpcomponents httpclient 二,编写demo类 注意不要导错包了,是org.jsoup.nod ...

最新文章

  1. php函数serialize()与unserialize()
  2. LeetCode 289. Game of Life--Java,Python解法
  3. 《小岛经济学--鱼、美元和经济的故事》Digest
  4. Ubuntu apt-get 更新/查看软件
  5. Dubbo搭建监控中心
  6. [SOJ] 无路可逃?
  7. 编写模块时的声明(含MODULE_LICENSE等)
  8. 百度地图Polyline 清除
  9. IDEA 常用配置以及快捷
  10. TensorFlow工具及笔记
  11. IntelliJ IDEA 2018.2设置背景图片及透明度
  12. python traceback报错_Python traceback.print_exc()返回’None’
  13. 习题第一章 构造过程抽象
  14. 【错误记录】springboot项目报错Field xxx in com.xx.xx.xx.impl.xxImpl required a bean
  15. Trimble Sketchup Pro 2013 英文破解版
  16. 凹凸技术揭秘:如何服务 toG 项目——数字人民币项目前端总结
  17. SDR对比,以及工作原理介绍
  18. 珠海到各大机场的线路
  19. 【奇技淫巧】Linux | 时光之主-date
  20. 微信小程序——修改radio组件的大小

热门文章

  1. 学好英语网html首页制作,网页 英语
  2. 头插法、尾插法建立单链表
  3. 区块链重要基础知识7-1——标准脚本P2PKH、P2SH
  4. 剑指offer所有的题目的总结
  5. 蓝屏的原因及解决方法
  6. Mac上测试Internet Explorer的N种方法
  7. 木块砌墙---解题报告
  8. 移动端疑难杂症解决方案完全指南
  9. 【总结】1135- 图解虚拟 DOM 之 DIff 算法
  10. 二维码简介_二维码基本概念_二维码基本原理