Jsoup系列学习(2)-解析html文件
解析html文件
1、当我们通过发送http请求时,有时候返回结果是一个html格式字符串,你需要从一个网站获取和解析一个HTML文档,并查找其中的相关数据。你可以使用下面解决方法:
使用 Jsoup.connect(String url)
方法:
//发送请求
Document doc = Jsoup.connect("https://www.baidu.com/").get();
//获取id号为kw的控件
Element content = doc.getElementById("kw");
//输出控件所有属性
System.out.println(content.attributes());
输出结果
id="kw" name="wd" class="s_ipt" value="" maxlength="255" autocomplete="off"
页面源代码显示,他其实与输出结果是一致的,这就好比是selenium自动化框架一样,通过 driver.findElement(By.id("kw"));找到这个控件,然后堆空间进行各种操作。
说明
connect(String url)
方法创建一个新的 Connection
, 和 get()
取得和解析一个HTML文件。如果从该URL获取HTML时发生错误,便会抛出 IOException,应适当处理。
Connection
接口还提供一个方法链来解决特殊请求,具体如下:
Document doc = Jsoup.connect("http://example.com")
.data("query", "Java")
.userAgent("Mozilla")
.cookie("auth", "token")
.timeout(3000)
.post();
数据抽取
1、使用DOM方法来遍历一个document对象
既然我们想要从html中获取指定数据,那么我们先得要找到该控件,我们把它叫做Elements对象,然后才是获取该控件的某些值。
查找元素
getElementById(String id) 通过id号查找
getElementsByTag(String tag) 标签名查找
getElementsByClass(String className) class名查找
getElementsByAttribute(String key)
(and related methods)- Element siblings:
siblingElements()
,firstElementSibling()
,lastElementSibling()
;nextElementSibling()
,previousElementSibling()
- Graph:
parent()
,children()
,child(int index)
元素数据
attr(String key)
获取属性attr(String key, String value)
设置属性attributes()
获取所有属性id()
,className()
andclassNames()
text()
获取文本内容text(String value)
设置文本内容html()
获取元素内HTMLhtml(String value)
设置元素内的HTML内容outerHtml()
获取元素外HTML内容data()
获取数据内容(例如:script和style标签)tag()
andtagName()
操作HTML和文本
append(String html)
,prepend(String html)
appendText(String text)
,prependText(String text)
appendElement(String tagName)
,prependElement(String tagName)
html(String value)
示例1:获取控件name值
//发送请求
Document doc = Jsoup.connect("https://www.baidu.com/").get();
//获取class名为s_ipt所有element对象
Elements element = doc.getElementsByClass("s_ipt");
//获取第一个element对象的name属性值
String value = element.get(0).attr("name");
System.out.println(value);
示例2:当没有id或name的元素,只能通过相对路径来进行查找。
//发送请求
Document doc = Jsoup.connect("https://www.baidu.com/").get();
//获取id为u1的第一个子元素
Element element = doc.getElementById("u1").child(0);
//获取元素链接
String value1 = element.attr("href");
//获取元素文本内容
String value2 = element.text();
输出结果:
http://news.baidu.com
新闻
参考
1、jsoup学习总结:http://blog.csdn.net/u010814849/article/details/52526582
2、http://www.open-open.com/jsoup/load-document-from-url.htm
3、jsoup学习总结:http://www.cnblogs.com/tomcattd/archive/2013/01/02/2842137.html
Jsoup系列学习(2)-解析html文件的更多相关文章
- Java(Android)解析KML文件
參考自:http://blog.csdn.net/yyywyr/article/details/38359049 http://blog.csdn.net/warrenwyf/article/deta ...
- Android 解析XML文件和生成XML文件
解析XML文件 public static void initXML(Context context) { //can't create in /data/media/0 because permis ...
- CSharpGL(9)解析OBJ文件并用CSharpGL渲染
CSharpGL(9)解析OBJ文件并用CSharpGL渲染 2016-08-13 由于CSharpGL一直在更新,现在这个教程已经不适用最新的代码了.CSharpGL源码中包含10多个独立的Demo ...
- JAVA使用SAX解析XML文件
在我的另一篇文章(http://www.cnblogs.com/anivia/p/5849712.html)中,通过一个例子介绍了使用DOM来解析XML文件,那么本篇文章通过相同的XML文件介绍如何使 ...
- JAVA中使用DOM解析XML文件
XML是一种方便快捷高效的数据保存传输的格式,在JSON广泛使用之前,XML是服务器和客户端之间数据传输的主要方式.因此,需要使用各种方式,解析服务器传送过来的信息,以供使用者查看. JAVA作为一种 ...
- CSharpGL(5)解析3DS文件并用CSharpGL渲染
CSharpGL(5)解析3DS文件并用CSharpGL渲染 我曾经写过一个简单的*.3ds文件的解析器,但是只能解析最基本的顶点.索引信息,且此解析器是仿照别人的C++代码改写的,设计的也不好,不方 ...
- php解析.csv文件
public function actionImport() { //post请求过来的 $fileName = $_FILES['file']['name']; $fileTmpName = $_F ...
- java中采用dom4j解析xml文件
一.前言 在最近的开发中用到了dom4j来解析xml文件,以前听说过来解析xml文件的几种标准方式:但是从来的没有应用过来,所以可以在google中搜索dmo4j解析xml文件的方式,学习一下dom4 ...
- 使用XStream解析MXL文件用到的jar包---xpp3_min-1.1.3.4.O.jar和xstream-1.3.1.jar
使用XStream解析MXL文件用到的jar包---xpp3_min-1.1.3.4.O.jar和xstream-1.3.1.jar
随机推荐
- mac 无法识别seagate硬盘、无法向其写入文件
1,无法识别 Seagate 硬盘 新买的mac air Captian 10.11.6系统,连上硬盘根本不出现盘符,usb插头不要插得太深,慢慢的插入,看到硬盘白灯亮起就可以了 2,无法向 Seag ...
- Memcached和Redis比较
一.存储 Memcached基本只支持简单的key-value存储方式.Redis除key-value之外,还支持list,set,sorted set,hash等数据结构:Redis支持数据的备份, ...
- HTML5移动开发学习笔记之Canvas基础
1.第一个Canvas程序 看的是HTML5移动开发即学即用这本书,首先学习Canvas基础,废话不多说,直接看第一个例子. 效果图为: 代码如下: <!DOCTYPE html> < ...
- JS事件调试 - 查找HTML元素绑定的事件以及绑定代码所在位置
日常的网页开发调试工作中,经常需要知道指定的某个网页元素绑定了哪些事件以及绑定代码的位置,下面介绍三种用来跟踪页面中的事件的方法. 1.使用firefox调试 我们可以使用firefox的debug工 ...
- ASP.NET MVC5+EF6+EasyUI 后台管理系统(5)-EF增删改查
系列目录 前言 为了符合后面更新后的重构系统,文章于2016-11-1日重写 回顾上一节的解决方案,我们看出了解决方案中类库的关系 这里要说明一点MVC!=三层 他们大约是这样的一种关系 代码实现 上 ...
- ASP.NET MVC5+EF6+EasyUI 后台管理系统(63)-Excel导入和导出
系列目录 昨天文章太过仓促没有补充导出的示例源码,在者当时弄到到很晚没时间做出导出功能,对阅读理解造成影响,现补充一份示例源码,顺便补充导出的功能说明,望理解 示例代码下载 https://yun ...
- 【补充】Gitlab 部署 CI 持续集成
上一篇:<劈荆斩棘:Gitlab 部署 CI 持续集成> 上一篇所配置的.gitlab-ci.yml: stages: - build - test before_script: - ec ...
- TeamCity : Build 基本配置
前文中我们在 TeamCity 中创建了一个项目 HelloApp,并在这个项目中创建了一个名为 HelloAppDailyBuild 的Build 用来编译 demo 程序.本文我们将详细介绍 Bu ...
- C# ShellExcute与Process
C#运行外部程序的两种方法 ShellExecute using System.Runtime.InteropServices; public enum ShowWindowCommands : in ...
- mongo DB for C#
(1)Download the MongoDB C#驱动. http://www.nuget.org/packages/mongocsharpdriver/. (2) Add Reference to ...