jsoup (网页获取与解析)

简介: 1.获取 <dependency> <groupId>org.jsoup</groupId> <artifactId>jsoup</artifactId> <version>1.6.3</version></dependency> 2.常用类 org.jsoup.nodes.D

1.获取

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

2.常用类

org.jsoup.nodes.Document

一个Html文档。类的定义为:public class Document extends Element{}


Connection org.jsoup.Jsoup. connect(String url)
指定URL,为下一步拿到HTML网页做准备。

Document org.jsoup.Connection.get() throws IOException
发送get请求,得到Document。

两个示例
Document doc = Jsoup.connect("http://example.com").userAgent("Mozilla").data("name", "jsoup").get(); 
Document doc = Jsoup.connect("http://example.com").cookie("auth", "token").post(); 

String org.jsoup.nodes.Element.text()
获取此元素 与 它所有子元素的文本内容的组合。如给定的html为<p>Hello <b>there</b> now!</p>, p.text() ,那么返回的是"Hello there now!"

Document org.jsoup.Jsoup. parse(String html)
将Html内容解析为一个文档。

Document org.jsoup.Jsoup.parse(File in, String charsetName, String baseUri) 

从本地html文件中解析网页,得到document。

Elements org.jsoup.nodes.Element.select(String cssQuery)
寻找与指定css选择器匹配的元素。

Element org.jsoup.select.Elements.get(int index)

从elements中拿element,下标从0起。

Element org.jsoup.nodes.Element.child(int index)

返回该节点的第i个孩子,下标从0起。

3.Jsoup与浏览器

需要注意的是,我们平时上网用的浏览器,除了根据用户输入的url完成通信,还要解析执行javascript代码。
浏览器在发送http请求时,会在头部里面加入很多信息,比如Cookie、userAgent等。所以网站可以根据这些信息来确定这个请求是正常的用户请求还是爬虫机器请求,对于后者,为了减轻网站压力服务器通常不予回应,所以该系统在使用jsoup工具时会附上猎豹浏览器的真实userAgent,降低失败率。
浏览器在拿到网页以后,会执行java script代码,有一些代码会再次让浏览器发送请求,拿到一些内容来展现在网页上。因为jsoup不能执行java script代码,所以会出现它拿到的内容少于真实内容的情形。

目录
相关文章
|
数据采集 存储 数据库连接
Requests与BeautifulSoup:高效解析网页并下载资源
Requests与BeautifulSoup:高效解析网页并下载资源
|
XML 前端开发 API
网页内容解析技巧:Typhoeus 与 Nokogiri 的结合使用
网页内容解析技巧:Typhoeus 与 Nokogiri 的结合使用
|
数据采集 JavaScript API
网页解析库:BeautifulSoup与Cheerio的选择
网页解析库:BeautifulSoup与Cheerio的选择
|
数据采集 XML 前端开发
Jsoup在Java中:解析京东网站数据
Jsoup在Java中:解析京东网站数据
|
数据采集 JavaScript 前端开发
Python 爬虫实战:抓取和解析网页数据
【8月更文挑战第31天】本文将引导你通过Python编写一个简单的网络爬虫,从网页中抓取并解析数据。我们将使用requests库获取网页内容,然后利用BeautifulSoup进行解析。通过本教程,你不仅能够学习到如何自动化地从网站收集信息,还能理解数据处理的基本概念。无论你是编程新手还是希望扩展你的技术工具箱,这篇文章都将为你提供有价值的见解。
1464 1
|
编译器 PHP 开发者
PHP 7新特性深度解析与实践深入浅出PHP:构建你的第一个动态网页
【8月更文挑战第27天】本文将深入探讨PHP 7的新特性,包括性能提升、语法改进等,并通过代码示例展示如何在实际项目中应用这些新特性。同时,我们还将讨论如何优化现有项目以充分利用PHP 7的优势。让我们一起探索PHP 7的世界,提升开发效率和项目质量!
|
安全 网络安全 Android开发
深度解析:利用Universal Links与Android App Links实现无缝网页至应用跳转的安全考量
【10月更文挑战第2天】在移动互联网时代,用户经常需要从网页无缝跳转到移动应用中。这种跳转不仅需要提供流畅的用户体验,还要确保安全性。本文将深入探讨如何利用Universal Links(仅限于iOS)和Android App Links技术实现这一目标,并分析其安全性。
2723 0
|
设计模式 存储 安全
【23种设计模式·全精解析 | 创建型模式篇】5种创建型模式的结构概述、实现、优缺点、扩展、使用场景、源码解析
结构型模式描述如何将类或对象按某种布局组成更大的结构。它分为类结构型模式和对象结构型模式,前者采用继承机制来组织接口和类,后者釆用组合或聚合来组合对象。由于组合关系或聚合关系比继承关系耦合度低,满足“合成复用原则”,所以对象结构型模式比类结构型模式具有更大的灵活性。 结构型模式分为以下 7 种: • 代理模式 • 适配器模式 • 装饰者模式 • 桥接模式 • 外观模式 • 组合模式 • 享元模式
930 140
【23种设计模式·全精解析 | 创建型模式篇】5种创建型模式的结构概述、实现、优缺点、扩展、使用场景、源码解析
|
算法 测试技术 C语言
深入理解HTTP/2:nghttp2库源码解析及客户端实现示例
通过解析nghttp2库的源码和实现一个简单的HTTP/2客户端示例,本文详细介绍了HTTP/2的关键特性和nghttp2的核心实现。了解这些内容可以帮助开发者更好地理解HTTP/2协议,提高Web应用的性能和用户体验。对于实际开发中的应用,可以根据需要进一步优化和扩展代码,以满足具体需求。
1520 29
|
前端开发 数据安全/隐私保护 CDN
二次元聚合短视频解析去水印系统源码
二次元聚合短视频解析去水印系统源码
600 4

推荐镜像

更多
  • DNS