import java.io.File;
import java.io.IOException;
import java.net.URL;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.safety.Whitelist;
import org.jsoup.select.Elements;
public class test {
/*
*
* Jsoup.parse(String html) [html:是html代码]
* Jsoup.parse(String html, String baseUri) [baseUri:是用来将相对 URL 转成绝对URL]
* Jsoup.parseBodyFragment(String html)
* Jsoup.connect(String url) [方法说明:从一个URL加载一个Document对象]
* Jsoup.parse(File in, String charsetName, String baseUri) [方法说明:根据一个文件加载Document对象]
* Jsoup.parse(File in, String charsetName) [方法说明:根据一个文件加载Document对象]
* */
public static void main(String[] args) {
/*
* parse(String html, String baseUri) 这方法能够将输入的HTML解析为一个新的文档 (Document),
* 参数 baseUri 是用来将相对 URL 转成绝对URL,并指定从哪个网站获取文档。
* 如这个方法不适用,你可以使用 parse(String html) 方法来解析成HTML字符串如上面的示例。
* 只要解析的不是空字符串,就能返回一个结构合理的文档,其中包含(至少) 一个head和一个body元素。
* 一旦拥有了一个Document,你就可以使用Document中适当的方法或它父类 Element和Node中的方法来取得相关数据。
* */
// 直接从字符串中输入 HTML 文档
String html = "<html><head><title> 开源中国社区 </title></head>"
+ "<body><p> 这里是 jsoup 项目的相关文章 </p></body></html>";
Document doc = Jsoup.parse(html);
//只用一行代码就可以将html转成纯文本:
System.out.println(Jsoup.parse(html).text());
try {
/*
* 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();
* 这个方法只支持Web URLs (http和https 协议);
* 假如你需要从一个文件加载,可以使用 parse(File in, String charsetName) 代替。
* */
// 从 URL 直接加载 HTML 文档
Document doc1 = Jsoup.connect("http://www.ibm.com/developerworks/cn/java/j-lo-jsouphtml/").get();
String title = doc1.title();
// System.out.println(title1);
Document doc2 = Jsoup.connect("http://www.ibm.com/developerworks/cn/java/j-lo-jsouphtml/")
.data("query", "Java") // 请求参数
.userAgent("I ’ m jsoup") // 设置 User-Agent
.cookie("auth", "token") // 设置 cookie
.timeout(3000) // 设置连接超时时间
.post(); // 使用 POST 方法访问 URL
// System.out.println(doc2.getAllElements());
/*
* parse(File in, String charsetName, String baseUri) 这个方法用来加载和解析一个HTML文件。
* 如在加载文件的时候发生错误,将抛出IOException,应作适当处理。
* baseUri 参数用于解决文件中URLs是相对路径的问题。如果不需要可以传入一个空的字符串。
* 另外还有一个方法parse(File in, String charsetName) ,它使用文件的路径做为 baseUri。
* 这个方法适用于如果被解析文件位于网站的本地文件系统,且相关链接也指向该文件系统。
* */
// 在本机硬盘上有一个HTML文件,需要对它进行解析从中抽取数据或进行修改。�ĵ�
File input = new File("D:/test.htm");
Document doc3 = Jsoup.parse(input, "UTF-8","http://www.ibm.com/developerworks/cn/java/j-lo-jsouphtml//");
// System.out.println(doc3.html());
Element content = doc3.getElementById("ibm-masthead-dw");
Elements links = content.getElementsByTag("a");
for (Element link : links) {
String linkHref = link.attr("href");
String linkText = link.text();
// System.out.println(linkHref);
// System.out.println(linkText);
}
/*
* 这个select 方法在Document, Element,或Elements对象中都可以使用。
* 且是上下文相关的,因此可实现指定元素的过滤,或者链式选择访问。
* Select方法将返回一个Elements集合,并提供一组方法来抽取和处理结果
* */
Elements links2 = doc.select("a[href]"); // 具有 href 属性的链接��
// System.out.println(links2);
Elements gif = doc.select("img[src$=.gif]");// 所有引用 gif 图片的元素Ԫ��
// System.out.println(gif);
Element masthead = doc.select("div.masthead").first();// 找出定义了 class=masthead 的元素
// System.out.println(masthead);
//jsoup 的 attr 方法提供了一个 abs: 的操作
URL url = new URL("http://www.ibm.com/developerworks/cn/java/j-lo-jsouphtml/");
Document doc4 = Jsoup.parse(url, 3*5000);
Element link = doc4.select("a").first();
String relHref = link.attr("href"); // == "#ibm-content"
//链接包含主机地址
String absHref = link.attr("abs:href"); // "http://www.ibm.com/developerworks/cn/java/j-lo-jsouphtml/#ibm-content"
// System.out.println("relHref"+ relHref);
// System.out.println("absHref"+ absHref);
//脚本清除
String unsafe = "<p><a href='http://example.com/' onclick='stealCookies()'>Link</a></p>";
String safe = Jsoup.clean(unsafe, Whitelist.basic());
// now: <p><a href="http://example.com/" rel="nofollow">Link</a></p>
System.out.println(safe);
/*
* 在解析文档的同时,我们可能会需要对文档中的某些元素进行修改,
* 例如我们可以为文档中的所有图片增加可点击链接、修改链接地址或者是修改文本等。
* */
doc.select("div.comments a").attr("rel", "nofollow");
// 为所有链接增加 rel=nofollow 属性
doc.select("div.comments a").addClass("mylinkclass");
// 为所有链接增加 class=mylinkclass 属性
doc.select("img").removeAttr("onclick"); // 删除所有图片的 onclick 属性
doc.select("input[type=text]").val(""); // 清空所有文本输入框中的文本
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
分享到:
相关推荐
String html = "<html><head><title>Test</title></head><body><p>Hello World!</p></body></html>"; doc = Jsoup.parse(html); ``` 接下来,你可以使用CSS选择器来查找元素: ```java Elements paragraphs = doc....
**JsoupDemo可运行的完整工程** JsoupDemo是一个基于Java的项目,它利用Jsoup库来实现网页内容的抓取和解析。Jsoup是一款强大的、易于使用的库,专门用于处理实际世界中的HTML,帮助开发者提取和操作数据。在本项目...
在Jsoup.jar中集成代理ip的设置功能,方便用户使用, 例:Jsoup.connect("http://1212.ip138.com/ic.asp").proxy("test.proxy.mayidaili.com", 8123, null).header("Proxy-Authorization", authHeader).get();
String html = "<html><head><title>Test Page</title></head><body><p>Hello, World!</p></body></html>"; Document doc = Jsoup.parse(html); // 使用CSS选择器选取元素 Elements paragraphs = doc.select("p...
Document doc = Jsoup.parse("<html><body><div class='test'>Hello</div><span>World</span></body></html>"); Elements elements = doc.select("div.test"); // 选择class为'test'的div元素 for (Element element ...
**JSoup:强大的HTML解析库** JSoup是一个用于Java的开源库,专门设计用来解析HTML内容,同时也支持从URL抓取网页...在压缩包中的"JavaJsoup"文件中,你可能找到更多关于如何在Java项目中集成和使用JSoup的示例代码。
String html = "<html><head><title>Test</title></head><body><p>Hello World</p></body></html>"; Document doc = Jsoup.parse(html); ``` 3. **元素选择**:Jsoup支持CSS选择器,可以方便地找到文档中的特定...
String html = "<html><head><title>Test Page</title></head><body><p>Hello, World!</p></body></html>"; Document doc = Jsoup.parse(html); // 清理并获取标题 String cleanedTitle = doc.title(); ...
6. `src`:源代码目录,通常包含`main`和`test`两个子目录,分别存放主程序代码和测试代码。 7. `.idea`:IntelliJ IDEA的项目元数据目录,包含了IDE的项目配置信息。 **项目实现** 该项目的核心部分可能包含以下...
这个工具包包含了jsoup的三个关键组成部分:javadoc(API文档)、sources(源代码)和jar(编译后的类库),使得开发者能够深入理解并高效使用jsoup。 **一、jsoup的功能特性** 1. **HTML解析**:jsoup能够准确地...
本篇将详细介绍jSoup库在Java中解析HTML的相关知识点,并通过提供的`Test01.java`和`UrlUtils.java`两个文件名推测可能的实现方式。 **1. jSoup库介绍** jSoup是Java的一个开源库,专门用于解析HTML和XML文档。它...
**jsoup库详解** 在Java世界中,处理HTML文档并从中提取数据时,jsoup是一个非常强大的工具。这个开源库提供了简洁的API,使得我们能够方便地解析、操作以及清洁HTML内容,就像处理DOM(Document Object Model)...
**jsoup库详解** 在Java开发中,处理HTML文档是一项常见的任务,无论是从网页抓取信息,还是进行数据解析,都需要高效且可靠的工具。jsoup就是这样一个强大的库,专为了解析、提取和操作HTML而设计。jsoup的最新...
### 关于Android之Jsoup解析 #### 一、Jsoup简介及主要功能 Jsoup是一款专为Java设计的HTML解析库,它可以帮助开发者轻松地解析HTML文档并从中抽取所需的数据。Jsoup支持从URL地址、文件或字符串等多种来源读取...
- **jsoup开发指南,jsoup中文使用手册,jsoup中文文档_files**:这个文件夹通常包含文档中引用的图片、样式表和脚本,确保文档在本地正确显示。 总的来说,jsoup是一个强大且易用的Java库,它使得处理HTML变得更加...
在标题中提到的"jsoup-1.8.1.jar"是JSoup库的一个版本,它是一个可直接添加到Java项目的jar包,方便开发者在项目中快速引入并使用。 **1. JSoup的基本用法** JSoup的核心接口是`org.jsoup.Jsoup`,它提供了一种...
String html = "<html><head><title>Test Page</title></head><body><p>Hello, World!</p></body></html>"; Document doc = Jsoup.parse(html); System.out.println("Title: " + doc.title()); // 解析URL ...
在项目"Jsoup_Test2"中,可能包含了以下内容: 1. 主要的Java源代码文件,用于实现爬虫逻辑。 2. 可能有的配置文件,如日志设置或者代理服务器信息。 3. 测试用例,用于验证爬取和解析功能是否正常工作。 测试代码...
最后,压缩包中的`test_1`文件可能是一个XML文件,包含了我们要解析的具体数据。将这个文件解压后,使用上述代码进行实际的解析操作,你可以从中获取有关该城市的具体信息。 总的来说,Jsoup虽然主要设计用于HTML...
- **模拟HTTP请求**:在测试中,可以使用Jsoup的`connect`方法模拟用户请求,如`Jsoup.connect("/test").execute()`。 - **验证响应**:执行请求后,可以获取响应状态码、头部信息和HTML内容,然后用Jsoup解析响应...