jsoup 的基本使用以及API内容

Jsoup 获取 Document 的三种方法:

1. 读取取字符串的方式获取 Document,代码如下所示:

@Test
//获取完整的字符串内容
public void test01() {
    String html = "<html> <div> <h1>h1标签</h1> <span>span标签</span> </div> </html>";
    Document document = Jsoup.parse(html);
    System.out.println(document);
}

@Test
//获取部分的字符串内容
public void test02() {
    String html = "<html> <div> <h1>h1标签</h1> <span>span标签</span> </div> </html>";
    Document document = Jsoup.parse(html);
    //此处就像 JavaScript 的选择器
    Elements div = document.getElementsByTag("div");
    System.out.println(div);
}

test01 输出结果如下:

<html> 
 <head></head>
 <body>
  <div> 
   <h1>h1标签</h1> <span>span标签</span> 
  </div> 
 </body>
</html>

test02 输出结果如下:

<div> 
 <h1>h1标签</h1> <span>span标签</span> 
</div>

2. 使用 GET 或则 POST 方式获取 Document,代码如下所示:

@Test
//通过 GET 方式获取
public void test03() {
    Document document;
    try {
        //get 请求
        System.out.println("GET 请求方式获取数据");
        document = Jsoup.connect("http://bp.shijialeya.top").get();
        System.out.println(document);
        System.out.println();
    } catch (IOException e) {
        e.printStackTrace();
    }
}

@Test
//通过 POST 方式获取
public void test04() {
    Document document;
    try {
        //POST请求
        System.out.println("POST 请求方式获取数据");
        document = Jsoup.connect("http://bp.shijialeya.top")
                .data("username", "jiale")  //添加请求数据参数。
                .userAgent("Mozilla AppleWebKit Chrome Safari Edg")  //设置请求用户代理头。
                .cookie("auth", "token")  //设置请求中要发送的 cookie。
                .timeout(2000)  //设置超时时间
                .post();
        //更多的 API查看文章末尾 Connection 接口的方法
        System.out.println(document);
    } catch (IOException e) {
        e.printStackTrace();
    }
}

test03 输出结果如下:

GET 请求方式获取数据
<!doctype html>
<html lang="ZH-cn"> 
 <head> 
  <meta charset="UTF-8"> 
  <meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=no"> 
  //省略...

test04 输出结果如下:

POST 请求方式获取数据
<!doctype html>
<html lang="ZH-cn"> 
 <head> 
  <meta charset="UTF-8"> 
  <meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=no"> 
  //省略...

3. 在文件中获取 Document,代码如下所示:
在同目录下创建 index.html

<html>
<head>
    <title>hello</title>
</head>
<body>
    键盘敲烂, 工资过万
</body>
</html>

编写 Java 类

@Test
//通过 File 方式获取
public void test05() {
    File file = new File("src/main/resources/index.html");
    Document document = null;
    try {
        document = Jsoup.parse(file, "UTF-8");
        System.out.println(document);
    } catch (IOException e) {
        e.printStackTrace();
    } finally {
        if (document != null){
            document.clone();
        }
    }
}

test05 输出结果如下:

<html> 
 <head> 
  <title>hello</title> 
 </head> 
 <body>
   键盘敲烂, 工资过万  
 </body>
</html>

使用 Document 通过选择器获取 Elements

常用的方法:

  • select​(String cssQuery):查找与SelectorCSS查询匹配的元素,类似于 JQuery 的选择器。
  • getElementById​(String id):通过ID查找元素
  • getElementsByClass​(String className):通过class查找元素
  • getElementsByTag​(String tagName) 通过指定名称查找元素,并递归地查找这些元素。
  • getAllElements():在此元素下找到所有元素。
  • firstElementSibling():获取此元素的第一个元素同级
  • getElementsByAttributeStarting​(String keyPrefix):查找具有以提供的前缀开头的属性名称的元素
  • getElementsByAttributeValue​(String key, String value): 查找具有具有特定值的属性的元素
  • getElementsByAttributeValueContaining​(String key, String match):查找具有其值包含匹配字符串的属性的元素
  • getElementsByAttributeValueStarting​(String key, String valuePrefix):查找具有以值前缀开头的属性的元素
  • getElementsByAttributeValueEnding​(String key, String valueSuffix):查找具有以值后缀结尾的属性的元素
  • getElementsContainingText​(String searchText) :查找包含指定字符串的元素

创建一个 index.html 文件,内容如下:

<html>
<head>
    <title>hello页面</title>
</head>
<body>
    <div class="boxClass">class div 盒子</div>
    <div id="boxId">Id div 盒子</div>
    <div><span>div 下的 span 标签</span></div>
</body>
</html>

Java 代码示例:

@Test
//选择器
public void test06() {
    File file = new File("src/main/resources/index.html");
    Document document = null;
    try {
        document = Jsoup.parse(file, "UTF-8");
        //select 类似于 JQuery 选择器
        Elements e1 = document.select("body>div>span"); //<span>div 下的 span 标签</span>
        System.out.println(e1);

        //getElementById id 选择器
        Element e2 = document.getElementById("boxId");
        System.out.println(e2);//<div id="boxId"> Id div 盒子 </div>

        //getElementsByClass class 选择器
        Elements e3 = document.getElementsByClass("boxClass");
        System.out.println(e3);//<div class="boxClass"> class div 盒子 </div>

        //getAllElements
        Elements e4 = document.getElementsByTag("span");
        System.out.println(e4);//<span>div 下的 span 标签</span>
		
		//...
    } catch (IOException e) {
        e.printStackTrace();
    } finally {
        if (document != null) {
            document.clone();
        }
    }
}

获取 Elements 的内容

常用的方法:

  • html():检索元素的内部HTML。
  • html​(String html):设置此元素的内部HTML。
  • text():获取此元素及其所有子元素的组合文本。
  • text​(String text):设置文档的文本。

Java 代码示例:

@Test
//获取 Elements 的内容
public void test07() {
    File file = new File("src/main/resources/index.html");
    Document document = null;
    try {
        document = Jsoup.parse(file, "UTF-8");
        //html:不带参数是获取 html,带参数是设置 html
        String html = document.select("body").html();
        System.out.println(html);

        //text:不带参数是获取 text,带参数是设置 text
        String text = document.select("body").text();
        System.out.println(text);//class div 盒子 Id div 盒子 div 下的 span 标签
    } catch (IOException e) {
        e.printStackTrace();
    } finally {
        if (document != null) {
            document.clone();
        }
    }
}

API

下面是 Jsoup 的 API,参考自:jsoup官方文档(Jsoup、Document、Element 、Node、Elements、Connection 接口)

public class org.jsoup.Jsoup 类
extends Object

所有方法

修饰符和类型方法名称描述
static Stringclean​(String bodyHtml, String baseUri, Whitelist whitelist)通过解析输入HTML并通过允许的标签和属性的白名单对其进行过滤,从不受信任的输入HTML中获得安全的HTML。
static Stringclean​(String bodyHtml, String baseUri, Whitelist whitelist, Document.OutputSettings outputSettings)通过解析输入HTML并通过允许的标签和属性的白名单对其进行过滤,从不受信任的输入HTML中获得安全的HTML。
static Stringclean​(String bodyHtml, Whitelist whitelist)通过解析输入HTML并通过允许的标签和属性的白名单对其进行过滤,从不受信任的输入HTML中获得安全的HTML。
static Connectionconnect​(String url)创建一个新Connection的URL。
static booleanisValid​(String bodyHtml, Whitelist whitelist)测试输入正文HTML是否仅具有白名单允许的标签和属性。
static Documentparse​(File in, String charsetName)将文件内容解析为HTML。
static Documentparse​(File in, String charsetName, String baseUri)将文件内容解析为HTML。
static Documentparse​(InputStream in, String charsetName, String baseUri)读取输入流,并将其解析为Document。
static Documentparse​(InputStream in, String charsetName, String baseUri, Parser parser)读取输入流,并将其解析为Document。
static Documentparse​(String html)将HTML解析为文档。
static Documentparse​(String html, String baseUri)将HTML解析为文档。
static Documentparse​(String html, String baseUri, Parser parser)使用提供的解析器将HTML解析为文档。
static Documentparse​(URL url, int timeoutMillis)提取一个URL,并将其解析为HTML。
static DocumentparseBodyFragment​(String bodyHtml)假设HTML构成HTML的片段,则解析HTML的片段body。
static DocumentparseBodyFragment​(String bodyHtml, String baseUri)假设HTML构成HTML的片段,则解析HTML的片段body。

public class org.jsoup.nodes.Document 类
extends Element

构造方法

构造方法描述
Document​(String baseUri)创建一个新的空文档。

所有方法

修饰符和类型方法名称描述
Elementbody()文档body元素的访问者。
Charsetcharset()返回此文档中使用的字符集。
voidcharset​(Charset charset)设置本文档中使用的字符集。
Documentclone()创建该节点及其所有子节点的独立的深层副本。
ElementcreateElement​(String tagName)使用此文档的基本uri创建一个新的Element。
staticDocument createShell​(String baseUri)创建一个有效的文档空外壳,适用于向其中添加更多元素。
DocumentTypedocumentType()返回此文档的文档类型。
Elementhead()文档head元素的访问者。
Stringlocation()获取解析此文档的URL。
StringnodeName()获取此节点的节点名称。
Documentnormalise()规范化文档。
StringouterHtml()获取此节点的外部HTML。
Document.OutputSettingsoutputSettings()获取文档的当前输出设置。
DocumentoutputSettings​(Document.OutputSettings outputSettings)设置文档的输出设置。
Parserparser()获取用于解析此文档的解析器。
Documentparser​(Parser parser)设置用于创建此文档的解析器。
Document.QuirksModequirksMode()
DocumentquirksMode​(Document.QuirksMode quirksMode)
Elementtext​(String text)设置body本文档的文本。
Stringtitle()获取文档title元素的字符串内容。
voidtitle​(String title)设置文档的title元素。
booleanupdateMetaCharsetElement()返回文档中具有字符集信息的元素是否在通过document .charset(charset)进行更改时被更新。
voidupdateMetaCharsetElement​(boolean update)设置当通过document .charset(charset)进行更改时,此文档中具有字符集信息的元素是否被更新。
Document 继承了 Element,包含了所有的 Element 的方法!

public class org.jsoup.nodes.Element 类
extends Node

构造方法

构造方法描述
Element (String tag)创建一个新的独立元素。
Element (Tag tag, String baseUri)从标签和基本URI创建一个新元素。
Element​ (Tag tag, String baseUri, Attributes attributes)创建一个新的独立元素。

所有方法

修饰符和类型方法名称描述
ElementaddClass​(String className)在该元素的class属性中添加一个类名。
Elementafter​(String html)将指定的HTML插入到此元素之后的DOM中(如下所示)。
Elementafter​(Node node)将指定的节点插入到该节点之后的DOM中(如下所示)。
Elementappend​(String html)向此元素添加内部HTML。
ElementappendChild​(Node child)将节点子节点添加到此元素。
ElementappendElement​(String tagName)通过标签名称创建一个新元素,并将其添加为最后一个子元素。
ElementappendText​(String text)创建一个新的TextNode并将其附加到此元素。
ElementappendTo​(Element parent)将此元素添加到提供的父元素中,作为其下一个子元素。
Elementattr​(String attributeKey, boolean attributeValue)在此元素上设置布尔属性值。
Elementattr​(String attributeKey, String attributeValue)在此元素上设置属性值。
Attributesattributes()获取元素的所有属性。
StringbaseUri()获取适用于此节点的基本URI。
Elementbefore​(String html)将指定的HTML插入此元素之前的DOM中(作为前面的同级元素)。
Elementbefore​(Node node)将指定的节点插入到该节点之前的DOM中(作为先前的同级节点)。
Elementchild​(int index)通过从0开始的索引号获取此元素的子元素。
intchildNodeSize()获取此节点拥有的子节点数。
Elementschildren()获取此元素的子元素。
intchildrenSize()获取作为元素的该元素的子节点数。
StringclassName()获取此元素的“class”属性的文字值,其中可能包含多个类名,以空格分隔。
Set<String>classNames()获取所有元素的类名。
ElementclassNames​(Set<String> classNames)将元素的class属性设置为提供的类名称。
ElementclearAttributes()清除(删除)此节点中的所有属性。
Elementclone()创建该节点及其所有子节点的独立的深层副本。
Elementclosest​(String cssQuery)在与指定的CSS查询匹配的父级树中找到最接近的元素。
Elementclosest​(Evaluator evaluator)在与指定评估者匹配的父级树中找到最接近的元素。
StringcssSelector()获取将唯一选择此元素的CSS选择器。
Stringdata()获取此元素的组合数据。
List<DataNode>dataNodes()获取此元素的子数据节点。
Map<String,​String>dataset()获取此元素的HTML5自定义数据属性。
protected ElementdoClone​(Node parent)
protected voiddoSetBaseUri​(String baseUri)如果此节点跟踪基本URI,则仅为此节点(而不是其后代)设置baseUri。
intelementSiblingIndex()获取此元素在其同级元素列表中的列表索引。
Elementempty()删除元素的所有子节点。
protected List<Node>ensureChildNodes()
Elementfilter​(NodeFilter nodeFilter)通过该节点及其后代执行深度优先过滤。
ElementfirstElementSibling()获取此元素的第一个元素同级。
ElementsgetAllElements()在此元素下找到所有元素(包括自我和孩子的孩子)。
ElementgetElementById​(String id)通过ID查找元素,包括该元素或在该元素下。
ElementsgetElementsByAttribute​(String key)查找具有命名属性集的元素。
ElementsgetElementsByAttributeStarting​(String keyPrefix)查找具有以提供的前缀开头的属性名称的元素。
ElementsgetElementsByAttributeValue​(String key, String value)查找具有具有特定值的属性的元素。
ElementsgetElementsByAttributeValueContaining​(String key, String match)查找具有其值包含匹配字符串的属性的元素。
ElementsgetElementsByAttributeValueEnding​(String key, String valueSuffix)查找具有以值后缀结尾的属性的元素。
ElementsgetElementsByAttributeValueMatching​(String key, String regex)查找具有其值与提供的正则表达式匹配的属性的元素。
ElementsgetElementsByAttributeValueMatching​(String key, Pattern pattern)查找具有其值与提供的正则表达式匹配的属性的元素。
ElementsgetElementsByAttributeValueNot​(String key, String value)查找不具有此属性或具有不同值的元素。
ElementsgetElementsByAttributeValueStarting​(String key, String valuePrefix)查找具有以值前缀开头的属性的元素。
ElementsgetElementsByClass​(String className)查找具有此类的元素,包括该元素或在此元素下。
ElementsgetElementsByIndexEquals​(int index)查找其兄弟索引等于提供的索引的元素。
ElementsgetElementsByIndexGreaterThan​(int index)查找兄弟索引大于提供的索引的元素。
ElementsgetElementsByIndexLessThan​(int index)查找兄弟索引小于提供的索引的元素。
ElementsgetElementsByTag​(String tagName)查找具有指定标签名称的元素(包括在该元素下并在此元素下递归)。
ElementsgetElementsContainingOwnText​(String searchText)查找直接包含指定字符串的元素。
ElementsgetElementsContainingText​(String searchText)查找包含指定字符串的元素。
ElementsgetElementsMatchingOwnText​(String regex)查找其文本与提供的正则表达式匹配的元素。
ElementsgetElementsMatchingOwnText​(Pattern pattern)查找其文本与提供的正则表达式匹配的元素。
ElementsgetElementsMatchingText​(String regex)查找其文本与提供的正则表达式匹配的元素。
ElementsgetElementsMatchingText​(Pattern pattern)查找其文本与提供的正则表达式匹配的元素。
protected booleanhasAttributes()检查此Node是否具有实际的Attributes对象。
booleanhasClass​(String className)测试此元素是否具有类。
booleanhasText()测试此元素是否具有任何文本内容(不只是空格)。
Stringhtml()检索元素的内部HTML。
Elementhtml​(String html)设置此元素的内部HTML。
<T extends Appendable>T html​(T appendable)将此节点及其子节点写入给定的Appendable。
Stringid()获取id此元素的属性。
ElementinsertChildren​(int index, Collection<? extends Node> children)将给定的子节点插入到此元素的指定索引处。
ElementinsertChildren​(int index, Node… children)将给定的子节点插入到此元素的指定索引处。
booleanis​(String cssQuery)检查此元素是否与给定的SelectorCSS查询匹配。
booleanis​(Evaluator evaluator)检查此元素是否与给定的评估者匹配。
booleanisBlock()测试此元素是否为块级元素。
ElementlastElementSibling()获取此元素的最后一个元素同级
ElementnextElementSibling()获取此元素的下一个同级元素。
ElementsnextElementSiblings()获取此元素之后的每个同级元素。
StringnodeName()获取此节点的节点名称。
StringnormalName()获取此元素标签的标准化名称。
StringownText()仅获取此元素拥有的文本;无法获得所有子项的合并文本。
Elementparent()获取此节点的父节点。
Elementsparents()获取此元素的父项和祖先,直到文档根目录为止。
Elementprepend​(String html)将内部HTML添加到此元素中。
ElementprependChild​(Node child)在此元素的子元素的开头添加一个节点。
ElementprependElement​(String tagName)通过标签名称创建一个新元素,并将其添加为第一个子元素。
ElementprependText​(String text)创建一个新的TextNode并将其添加到此元素之前。
ElementpreviousElementSibling()获取此元素的上一个元素同级。
ElementspreviousElementSiblings()获取此元素之前的每个元素同级。
ElementremoveAttr​(String attributeKey)从此节点删除属性。
ElementremoveClass​(String className)从该元素的class属性中删除类名称。
Elementroot()获取此节点的根节点;就是它的最高祖先。
Elementsselect​(String cssQuery)查找与SelectorCSS查询匹配的元素,并以该元素为起始上下文。
Elementsselect​(Evaluator evaluator)查找与提供的评估程序匹配的元素。
ElementselectFirst​(String cssQuery)查找与SelectorCSS查询匹配的第一个元素,并以该元素为起始上下文。
ElementselectFirst​(Evaluator evaluator)查找与提供的Evaluator匹配的第一个元素,以该元素作为起始上下文,或者null如果没有匹配项。
ElementshallowClone()创建该节点的独立浅副本。
ElementssiblingElements()获取同级元素。
Tagtag()获取此元素的标签。
StringtagName()获取此元素的标签名称。
ElementtagName​(String tagName)更改此元素的标签。
Stringtext()获取此元素及其所有子元素的组合文本。
Elementtext​(String text)设置此元素的文本。
List<TextNode>textNodes()获取此元素的子文本节点。
ElementtoggleClass​(String className)在该元素的class属性上切换类名称:如果存在,将其删除;否则添加它。
Elementtraverse​(NodeVisitor nodeVisitor)在该节点及其后代中进行深度优先遍历。
Stringval()获取表单元素的值(输入,文本区域等)。
Elementval​(String value)设置表单元素的值(输入,文本区域等)。
StringwholeText()获取此元素的所有子元素的(未编码)文本,包括原始元素中存在的所有换行符和空格。
Elementwrap​(String html)将提供的HTML环绕此元素。
Element 继承 Node,包含了所有的 Node 的方法!

public abstract class org.jsoup.nodes.Node 类
extends Object
implements Cloneable

所有方法

修饰符和类型方法名称描述
StringabsUrl​(String attributeKey)从可能是相对的URL属性获取绝对URL。
protected voidaddChildren​(int index, Node… children)
protected voidaddChildren​(Node… children)
Nodeafter​(String html)将指定的HTML插入此节点之后的DOM中。
Nodeafter​(Node node)将指定的节点插入此节点之后的DOM中。
Stringattr​(String attributeKey)通过其键获取属性的值。
Nodeattr​(String attributeKey, String attributeValue)设置属性(键=值)。
abstract Attributesattributes()获取元素的所有属性。
abstract StringbaseUri()获取适用于此节点的基本URI。
Nodebefore​(String html)将指定的HTML插入此节点之前的DOM中。
Nodebefore​(Node node)将指定节点插入该节点之前的DOM中。
NodechildNode​(int index)通过基于0的索引获取子节点。
List<Node>childNodes()获取此节点的子级。
protected Node[]childNodesAsArray()
List<Node>childNodesCopy()返回此节点的子级的深层副本。
abstract intchildNodeSize()获取此节点拥有的子节点数。
NodeclearAttributes()清除(删除)此节点中的所有属性。
Nodeclone()创建该节点及其所有子节点的独立的深层副本。
protected NodedoClone​(Node parent)
protected abstract voiddoSetBaseUri​(String baseUri)如果此节点跟踪基本URI,则仅为此节点(而不是其后代)设置baseUri。
abstract Nodeempty()删除该节点的所有子节点。
protected abstract List<Node>ensureChildNodes()
booleanequals​(Object o)检查此节点是否与另一个节点相同(对象身份测试)。
Nodefilter​(NodeFilter nodeFilter)通过该节点及其后代执行深度优先过滤。
booleanhasAttr​(String attributeKey)测试此元素是否具有属性。
protected abstract booleanhasAttributes()检查此Node是否具有实际的Attributes对象。
booleanhasParent()
booleanhasSameValue​(Object o)检查此节点是否与另一个节点具有相同的内容。
<T extends Appendable> Thtml​(T appendable)将此节点及其子节点写入给定的Appendable。
protected voidindent​(Appendable accum, int depth, Document.OutputSettings out)
NodenextSibling()获取此节点的下一个同级。
abstract StringnodeName()获取此节点的节点名称。
StringouterHtml()获取此节点的外部HTML。
protected voidouterHtml​(Appendable accum)
DocumentownerDocument()获取与此节点关联的文档。
Nodeparent()获取此节点的父节点。
NodeparentNode()获取此节点的父节点。
NodepreviousSibling()获取此节点的先前同级。
voidremove()从DOM树中删除(删除)此节点。
NoderemoveAttr​(String attributeKey)从此节点删除属性。
protected voidremoveChild​(Node out)
protected voidreparentChild​(Node child)
protected voidreplaceChild​(Node out, Node in)
voidreplaceWith​(Node in)用提供的节点替换DOM中的该节点。
Noderoot()获取此节点的根节点;就是它的最高祖先。
voidsetBaseUri​(String baseUri)更新此节点及其所有后代的基本URI。
protected voidsetParentNode​(Node parentNode)
protected voidsetSiblingIndex​(int siblingIndex)
NodeshallowClone()创建该节点的独立浅副本。
intsiblingIndex()获取此节点在其节点同级列表中的列表索引。
List<Node>siblingNodes()检索此节点的兄弟节点。
StringtoString()获取此节点的外部HTML。
Nodetraverse​(NodeVisitor nodeVisitor)在该节点及其后代中进行深度优先遍历。
Nodeunwrap()从DOM中删除此节点,并将其子级上移到该节点的父级中。
Nodewrap​(String html)将提供的HTML环绕此节点。

public class org.jsoup.select.Elements 类
extends ArrayList

构造方法

构造方法描述
Elements()
Elements​(int initialCapacity)
Elements​(Collection<Element> elements)
Elements​(List<Element> elements)
Elements​(Element… elements)

所有方法

修饰符和类型方法名称描述
StringabsUrl​(String attributeKey)从可能是相对的URL属性获取绝对URL。
ElementsaddClass​(String className)将类名称添加到每个匹配元素的class属性中。
Elementsafter​(String html)在每个匹配元素的外部HTML之后插入提供的HTML。
Elementsappend​(String html)将提供的HTML添加到每个匹配元素的内部HTML的末尾。
Stringattr​(String attributeKey)从具有该属性的第一个匹配元素中获取一个属性值。
Elementsattr​(String attributeKey, String attributeValue)在所有匹配的元素上设置属性。
Elementsbefore​(String html)在每个匹配元素的外部HTML之前插入提供的HTML。
Elementsclone()创建这些元素的深层副本。
List<Comment>comments()获取Comment作为所选元素的直接子节点的节点。
List<DataNode>dataNodes()获取DataNode作为所选元素的直接子节点的节点。
List<String>eachAttr​(String attributeKey)获取每个匹配元素的属性值。
List<String>eachText()获取每个匹配元素的文本内容。
Elementsempty()清空(从中删除所有子节点)每个匹配的元素。
Elementseq​(int index)获取第n个匹配的元素作为Elements对象。
Elementsfilter​(NodeFilter nodeFilter)对每个选定元素执行深度优先过滤。
Elementfirst()获取第一个匹配的元素。
List<FormElement>forms()FormElement从所选元素(如果有)中
booleanhasAttr​(String attributeKey)检查是否有任何匹配的元素定义了此属性。
booleanhasClass​(String className)确定是否有任何匹配的元素在其class属性中设置了此类名称。
booleanhasText()测试是否有任何匹配的Element具有文本内容,而不仅仅是空白。
Stringhtml()获取所有匹配元素的组合内部HTML。
Elementshtml​(String html)设置每个匹配元素的内部HTML。
booleanis​(String query)测试是否有任何匹配的元素与提供的查询匹配。
Elementlast()获取最后匹配的元素。
Elementsnext()获取此列表中每个元素的直接下一个元素同级。
Elementsnext​(String query)获取此列表中每个元素的直接下一个元素同级,由查询过滤。
ElementsnextAll()获取此列表中每个元素的以下每个元素同级。
ElementsnextAll​(String query)获取此列表中与查询匹配的每个元素的以下每个元素同级。
Elementsnot​(String query)从此列表中删除与Selector查询匹配的元素。
StringouterHtml()获取所有匹配元素的组合外部HTML。
Elementsparents()获取匹配元素的所有父元素和祖先元素。
Elementsprepend​(String html)将提供的HTML添加到每个匹配元素的内部HTML的开头。
Elementsprev()获取此列表中每个元素的直接上一个元素同级。
Elementsprev​(String query)获取此列表中每个元素的直接前一个元素同级,由查询过滤。
ElementsprevAll()获取此列表中每个元素的每个先前的元素同级。
ElementsprevAll​(String query)获取此列表中与查询匹配的每个元素的每个先前的元素同级。
Elementsremove()从DOM中删除每个匹配的元素。
ElementsremoveAttr​(String attributeKey)从每个匹配的元素中删除一个属性。
ElementsremoveClass​(String className)从每个匹配元素的class属性中删除类名称(如果存在)。
Elementsselect​(String query)在此元素列表中找到匹配的元素。
ElementstagName​(String tagName)更新每个匹配元素的标签名称。
Stringtext()获取所有匹配元素的组合文本。
List<TextNode>textNodes()获取TextNode作为所选元素的直接子节点的节点。
ElementstoggleClass​(String className)在每个匹配元素的class属性上切换类名称。
StringtoString()获取所有匹配元素的组合外部HTML。
Elementstraverse​(NodeVisitor nodeVisitor)对每个选定元素执行深度优先遍历。
Elementsunwrap()从DOM中删除匹配的元素,并将其子级上移到其父级中。
Stringval()获取第一个匹配元素的表单元素的值。
Elementsval​(String value)在每个匹配的元素中设置表单元素的值。
Elementswrap​(String html)将提供的HTML环绕每个匹配的元素。

public interface Connection 接口
要获得一个新连接,使用Jsoup.connect(字符串)。连接包含连接。请求和连接。响应对象。请求对象可作为原型请求重用。

所有方法

修饰符和类型方法名称描述
Connectioncookie​(String name, String value)设置要在请求中发送的cookie。
Connectioncookies​(Map<String,​String> cookies)将每个提供的cookie添加到请求中。
Connection.KeyValdata​(String key)获取此密钥的数据KeyVal(如果有)
Connectiondata​(String… keyvals)添加许多请求数据参数。
Connectiondata​(String key, String value)添加请求数据参数。
Connectiondata​(String key, String filename, InputStream inputStream)添加输入流作为请求数据参数。
Connectiondata​(String key, String filename, InputStream inputStream, String contentType)添加输入流作为请求数据参数。
Connectiondata​(Collection<Connection.KeyVal> data)将所有提供的数据添加到请求数据参数中
Connectiondata​(Map<String,​String> data)将所有提供的数据添加到请求数据参数中
Connection.Responseexecute()执行请求。
ConnectionfollowRedirects​(boolean followRedirects)将连接配置为(不)遵循服务器重定向。
Documentget()将请求作为GET执行,然后解析结果。
Connectionheader​(String name, String value)设置请求标头。
Connectionheaders​(Map<String,​String> headers)将每个提供的标头添加到请求中。
ConnectionignoreContentType​(boolean ignoreContentType)解析响应时,忽略文档的Content-Type。
ConnectionignoreHttpErrors​(boolean ignoreHttpErrors)将连接配置为在发生HTTP错误时不引发异常。
ConnectionmaxBodySize​(int bytes)设置在关闭连接之前,将要从(未压缩的)连接读入主体的最大字节数,并截断输入(即
Connectionmethod​(Connection.Method method)将请求方法设置为使用GET或POST。
Connectionparser​(Parser parser)提供在解析对文档的响应时要使用的备用解析器。
Documentpost()将请求作为POST执行,然后解析结果。
ConnectionpostDataCharset​(String charset)设置x-www-form-urlencoded帖子数据的默认帖子数据字符集
Connectionproxy​(String host, int port)设置用于此请求的HTTP代理。
Connectionproxy​(Proxy proxy)设置要用于此请求的代理。
Connectionreferrer​(String referrer)设置请求引荐来源网址(又称为“引荐来源”)标头。
Connection.Requestrequest()获取与此连接关联的请求对象
Connectionrequest​(Connection.Request request)设置连接的请求
ConnectionrequestBody​(String body)设置POST(或PUT)请求正文。
Connection.Responseresponse()请求执行后,获取响应
Connectionresponse​(Connection.Response response)设置连接的响应
ConnectionsslSocketFactory​(SSLSocketFactory sslSocketFactory)设置自定义SSL套接字工厂
Connectiontimeout​(int millis)设置总的请求超时时间。
Connectionurl​(String url)将请求URL设置为获取。
Connectionurl​(URL url)将请求URL设置为获取。
ConnectionuserAgent​(String userAgent)设置请求用户代理标头。
  • 9
    点赞
  • 47
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 可以使用 Apache POI 来实现将 Word 文件转换为 PDF 格式的文件。Apache POI 是一个 Java 库,可以用来处理 Microsoft Office 文件,并且可以使用它来将 Word 文件转换为 PDF 格式。 ### 回答2: 要使用Java将以Word形式存储的HTML文件转换为PDF,可以使用一些开源的Java库来实现。 首先,需要将HTML文件加载到Java程序中。可以使用Apache POI库来读取Word文档,并将其转换为HTML格式。Apache POI提供了一组API来处理各种文档格式,包括Word文档(.doc和.docx)。 接下来,需要将HTML文件转换为PDF格式。可以使用开源的PDFBox库来实现这个功能。PDFBox是一个功能强大的Java库,可以创建和操作PDF文件。 首先,将HTML文件加载到Java程序中。可以使用POI的HTML Parser模块来读取HTML内容使用POI的XWPFWordExtractor类从Word文档中提取出文本。然后,使用这些文本创建一个PDF文件。 以下是一个简单的示例代码,演示了如何使用POI和PDFBox库将以Word形式存储的HTML文件转换为PDF: ```java import org.apache.poi.hwpf.HWPFDocument; import org.apache.poi.hwpf.converter.WordToHtmlConverter; import org.apache.poi.hwpf.usermodel.Range; import org.apache.poi.xwpf.usermodel.XWPFDocument; import org.apache.poi.xwpf.extractor.XWPFWordExtractor; import org.apache.pdfbox.pdmodel.PDDocument; import org.apache.pdfbox.pdmodel.PDPage; import org.apache.pdfbox.pdmodel.PDPageContentStream; import org.apache.pdfbox.text.PDFTextStripper; import java.io.*; public class HTMLtoPDFConverter { public static void main(String[] args) { String inputFile = "input.doc"; String outputFile = "output.pdf"; // 转换Word文档为HTML String htmlContent = convertWordToHTML(inputFile); // 将HTML转换为PDF convertHTMLToPDF(htmlContent, outputFile); System.out.println("转换完成!"); } private static String convertWordToHTML(String inputFile) { StringBuilder htmlContent = new StringBuilder(); try { FileInputStream fis = new FileInputStream(inputFile); HWPFDocument wordDoc = new HWPFDocument(fis); WordToHtmlConverter htmlConverter = new WordToHtmlConverter( org.apache.poi.hwpf.HWPFDocumentMapper.getInstance() ); htmlConverter.processDocument(wordDoc); htmlContent.append(htmlConverter.getDocument().getInnerHTML()); fis.close(); } catch (Exception e) { e.printStackTrace(); } return htmlContent.toString(); } private static void convertHTMLToPDF(String htmlContent, String outputFile) { try { // 创建PDF文档对象 PDDocument document = new PDDocument(); // 创建PDF页面 PDPage page = new PDPage(); document.addPage(page); // 创建PDF内容流 PDPageContentStream contentStream = new PDPageContentStream(document, page); // 创建HTML文本剥离器 PDFTextStripper stripper = new PDFTextStripper(); // 设置HTML内容 stripper.setHTMLText(htmlContent); // 提取HTML内容并绘制到PDF页面 stripper.writeText(contentStream); // 关闭内容流 contentStream.close(); // 保存PDF文件 document.save(outputFile); // 关闭PDF文档 document.close(); } catch (Exception e) { e.printStackTrace(); } } } ``` 以上代码示例了如何使用Apache POI的HWPF和XWPF模块来读取Word文档,并将其转换为HTML。然后,使用PDFBox库将HTML内容转换为PDF。 ### 回答3: 要使用Java将以Word形式存储的HTML转换为PDF,可以遵循以下步骤: 1. 解析HTML文件:可以使用HTML解析库,如Jsoup,从HTML文件中提取内容和样式。 2. 创建PDF文档使用Java的PDF库,如iText或Apache PDFBox,创建一个新的PDF文档对象。 3. 根据HTML内容,生成PDF内容:将HTML文件中的元素和样式映射到PDF文档中的对应元素和样式。 4. 添加样式和格式:根据HTML文件中的CSS样式规则,将样式应用到相应的PDF元素上。 5. 添加图片和链接:解析HTML文件中的图片和超链接标签,将其添加到PDF文档对应的位置。 6. 保存PDF文档:将生成的PDF文档保存到指定的文件路径。 以下是一个基本Java代码示例,演示了如何使用iText库将以Word形式存储的HTML转换为PDF: ```java import com.itextpdf.text.Document; import com.itextpdf.text.PageSize; import com.itextpdf.text.Paragraph; import com.itextpdf.text.pdf.PdfWriter; import org.jsoup.Jsoup; import org.jsoup.nodes.Document; import org.jsoup.nodes.Element; import org.jsoup.select.Elements; import java.io.FileOutputStream; import java.io.IOException; public class WordToPdfConverter { public static void main(String[] args) { try { // 解析HTML文件 org.jsoup.nodes.Document htmlDoc = Jsoup.parse(new File("input.html"), "UTF-8"); // 创建PDF文档 Document pdfDoc = new Document(PageSize.A4); // 创建PDF写入器 PdfWriter.getInstance(pdfDoc, new FileOutputStream("output.pdf")); // 打开PDF文档 pdfDoc.open(); // 遍历HTML文件中的所有段落元素 Elements paragraphs = htmlDoc.select("p"); for (Element paragraph : paragraphs) { // 创建PDF段落,并添加到PDF文档中 pdfDoc.add(new Paragraph(paragraph.text())); } // 关闭PDF文档 pdfDoc.close(); System.out.println("HTML转换为PDF成功!"); } catch (IOException e) { e.printStackTrace(); } } } ``` 上述示例代码仅演示了基本的转换过程,实际应用中可能需要更复杂的处理逻辑和样式调整。同时,还可根据具体需求使用其他PDF库或添加更多的功能。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值