`

解析HTML工具Jsoup的封装类

阅读更多
自己封装了使用jsoup解析HTML文件的封装工具类,欢迎大家多提点意见。

package util;

import java.io.File;
import java.io.IOException;
import java.util.regex.Pattern;

import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;


public class JsoupParserUtil {

/**
* 根据元素id获取HTML元素
* @param document
* @param id
* @return
*/
public static Element getElementById(Document document,String id)
{
Element element=null;
if(document!=null&&id!=null&&!"".equals(id.trim()))
{
element=document.getElementById(id);
}
return element;
}

/**
* 根据id获取HTML元素
* @param element
* @param id
* @return
*/
public static Element getElementById(Element element,String id)
{
Element resultElement=null;
if(element!=null)
{
resultElement=element.getElementById(id);
}
return resultElement;
}

/**
* 根据元素标签(tagName)获取HTMl元素
* @param document
* @param tagName
* @return
*/
public static Elements getElementsByTagName(Document document,String tagName)
{
Elements elements=null;
if(document!=null&&tagName!=null&&!"".equals(tagName))
{
elements=document.getElementsByTag(tagName);
}
return elements;
}

/**
* 根据元素标签(tagName)获取HTMl元素
* @param element
* @param tagName
* @return
*/
public static Elements getElementsByTagName(Element element,String tagName)
{
Elements resultElements=null;
if(element!=null&&tagName!=null&&!"".equals(tagName))
{
resultElements=element.getElementsByTag(tagName);
}
return resultElements;
}

/**
* 根据className(样式名称)获取HTML元素集合
* @param document
* @param className
* @return
*/
public static Elements getElementsByClassName(Document document,String className)
{
Elements elements=null;
if(document!=null&&className!=null&&!"".equals(className.trim()))
{
elements=document.getElementsByClass(className);
}
return elements;
}

/**
* 根据className(样式名称)获取HTML元素集合
* @param element
* @param className
* @return
*/
public static Elements getElementsByClassName(Element element,String className)
{
Elements resultElements=null;
if(element!=null&&className!=null&&!"".equals(className))
{
resultElements=element.getElementsByClass(className);
}
return resultElements;
}
/**
* 根据元素是否具有属性元素key返回元素集合
* @param document
* @param attributeNameKey 元素属性key值
* @return
*/
public static Elements getElementsByAttributeNameKey(Document document,String attributeNameKey)
{
Elements elements=null;
if(document!=null&&attributeNameKey!=null&&!"".equals(attributeNameKey))
{
elements=document.getElementsByAttribute(attributeNameKey);
}
return elements;
}

/**
* 根据元素是否具有属性元素key返回元素集合
* @param element
* @param attributeNameKey 元素属性key值
* @return
*/
public static Elements getElementsByAttributeNameKey(Element element,String attributeNameKey)
{
Elements resultElements=null;
if(element!=null&&attributeNameKey!=null&&!"".equals(attributeNameKey))
{
resultElements=element.getElementsByAttribute(attributeNameKey);
}
return resultElements;
}
/**
* 根据元素是否具有属性元素key并且key对应的值为value获取元素集合
* @param document
* @param attributeKey
* @param attributeValue
* @return
*/
public static Elements getElementsByAttributeNameValue(Document document,String attributeKey,String attributeValue)
{
Elements elements=null;
if(document!=null&&attributeKey!=null&&!"".equals(attributeKey.trim())&&attributeValue!=null&&!"".equals(attributeValue.trim()))
{
elements=document.getElementsByAttributeValue(attributeKey, attributeValue);
}
return elements;
}
/**
* 根据元素是否具有属性元素key并且key对应的值为value获取元素集合
* @param element
* @param attributeKey
* @param attributeValue
* @return
*/
public static Elements getElementsByAttributeNameValue(Element element,String attributeKey,String attributeValue)
{
Elements resultElements=null;
if(element!=null&&attributeKey!=null&&!"".equals(attributeKey.trim())&&attributeValue!=null&&!"".equals(attributeValue.trim()))
{
resultElements=element.getElementsByAttributeValue(attributeKey, attributeValue);
}
return resultElements;
}

/**
* 根据属性key值是否以特定字符串开头获取元素集合
* @param document
* @param attributeValue
* @return
*/
public static Elements getElementsByAttributeNameStartWithValue(Document document,String keyValue)
{
Elements elements=null;
if(document!=null&&keyValue!=null&&!"".equals(keyValue.trim()))
{
elements=document.getElementsByAttributeStarting(keyValue);
}
return elements;
}
/**
* 根据属性key值是否以特定字符串开头获取元素集合
* @param element
* @param attributeValue
* @return
*/
public static Elements getElementsByAttributeNameStartWithValue(Element element,String keyValue)
{
Elements elements=null;
if(element!=null&&keyValue!=null&&!"".equals(keyValue.trim()))
{
elements=element.getElementsByAttributeStarting(keyValue);
}
return elements;
}
/**
* 根据属性value值是否被包含在某个元素的某个属性中获取元素集合
* @param document
* @param containValue
* @return
*/
public static Elements getElementsByAttributeValueContaining(Document document,String attributeKey,String containValue)
{
Elements elements=null;
if(document!=null&&containValue!=null&&!"".equals(containValue))
{
elements=document.getElementsByAttributeValueContaining(attributeKey, containValue);
}
return elements;
}

/**
*  根据属性value值是否被包含在某个元素的某个属性中获取元素集合
* @param element
* @param attributeKey
* @param containValue
* @return
*/
public static Elements getElementsByAttributeValueContaining(Element element,String attributeKey,String containValue)
{
Elements elements=null;
if(element!=null&&containValue!=null&&!"".equals(containValue))
{
elements=element.getElementsByAttributeValueContaining(attributeKey, containValue);
}
return elements;
}
/**
* 根据属性的value值是否以某个字符串结尾获取元素集合
* @param document
* @param attributeKey
* @param valueSuffix
* @return
*/
public static Elements getElementsByAttributeValueEnding(Document document,String attributeKey,String valueSuffix)
{
Elements elements=null;
if(document!=null&&attributeKey!=null&&!"".equals(attributeKey)&&valueSuffix!=null&&!"".equals(valueSuffix))
{
elements=document.getElementsByAttributeValueEnding(attributeKey, valueSuffix);
}
return elements;
}

/**
* 根据属性的value值是否以某个字符串结尾获取元素集合
* @param element
* @param attributeKey
* @param valueSuffix
* @return
*/
public static Elements getElementsByAttributeValueEnding(Element element,String attributeKey,String valueSuffix)
{
Elements elements=null;
if(element!=null&&attributeKey!=null&&!"".equals(attributeKey)&&valueSuffix!=null&&!"".equals(valueSuffix))
{
elements=element.getElementsByAttributeValueEnding(attributeKey, valueSuffix);
}
return elements;
}
/**
* 根据属性值value的正则表达式获取元素集合
* @param document
* @param attributeKey
* @param pattern
* @return
*/
public static Elements getElementsByAttributeValueMatching(Document document,String attributeKey,Pattern pattern)
{
Elements elements=null;
if(document!=null&&attributeKey!=null&&!"".equals(attributeKey)&&pattern!=null)
{
elements=document.getElementsByAttributeValueMatching(attributeKey, pattern);
}
return elements;
}

/**
* 根据属性值value的正则表达式获取元素集合
* @param element
* @param attributeKey
* @param pattern
* @return
*/
public static Elements getElementsByAttributeValueMatching(Element element,String attributeKey,Pattern pattern)
{
Elements elements=null;
if(element!=null&&attributeKey!=null&&!"".equals(attributeKey)&&pattern!=null)
{
elements=element.getElementsByAttributeValueMatching(attributeKey, pattern);
}
return elements;
}

/**
* 根据属性值的value的正则表达式获取元素集合
* @param document
* @param attributeKey
* @param regualRegx
* @return
*/
public static Elements getElementsByAttributeValueMatching(Document document,String attributeKey,String regualRegx)
{
Elements elements=null;
if(document!=null&&attributeKey!=null&&!"".equals(attributeKey)&&regualRegx!=null&&!"".equals(regualRegx))
{
elements=document.getElementsByAttributeValueMatching(attributeKey, regualRegx);
}
return elements;
}

/**
* 根据属性值的value的正则表达式获取元素集合
* @param element
* @param attributeKey
* @param regualRegx
* @return
*/
public static Elements getElementsByAttributeValueMatching(Element element,String attributeKey,String regualRegx)
{
Elements elements=null;
if(element!=null&&attributeKey!=null&&!"".equals(attributeKey)&&regualRegx!=null&&!"".equals(regualRegx))
{
elements=element.getElementsByAttributeValueMatching(attributeKey, regualRegx);
}
return elements;
}
/**
* 返回属性键attributeKey不等于值attributeValue的元素集合
* @param document
* @param attributeKey
* @param attributeValue
* @return
*/
public static Elements getElementsByAttributeValueNot(Document document,String attributeKey,String attributeValue)
{
Elements elements=null;
if(document!=null&&attributeKey!=null&&!"".equals(attributeKey)&&attributeValue!=null&&!"".equals(attributeValue))
{
elements=document.getElementsByAttributeValueNot(attributeKey,attributeValue);
}
return elements;
}

/**
* 返回属性键attributeKey不等于值attributeValue的元素集合
* @param element
* @param attributeKey
* @param attributeValue
* @return
*/
public static Elements getElementsByAttributeValueNot(Element element,String attributeKey,String attributeValue)
{
Elements elements=null;
if(element!=null&&attributeKey!=null&&!"".equals(attributeKey)&&attributeValue!=null&&!"".equals(attributeValue))
{
elements=element.getElementsByAttributeValueNot(attributeKey,attributeValue);
}
return elements;
}
/**
* 根据选择器匹配的字符串返回
* Elements(元素集合)
* @param document
* @param selectStr 选择器(类似于JQuery)
* @return
*/
public static Elements getMoreElementsBySelectStr(Document document,String selectStr)
{
if(document==null||selectStr==null||"".equals(selectStr.trim()))
{
return null;
}
else
{
Elements elements=document.select(selectStr);
if(elements!=null&&elements.size()>0)
{
return elements;
}
else
{
return null;
}
}
}

/**
*根据选择器匹配的字符串返回
* Elements(元素集合)
* @param element
* @param selectStr
* @return
*/
public static Elements getMoreElementsBySelectStr(Element element,String selectStr)
{
if(element==null||selectStr==null||"".equals(selectStr.trim()))
{
return null;
}
else
{
Elements elements=element.select(selectStr);
if(elements!=null&&elements.size()>0)
{
return elements;
}
else
{
return null;
}
}
}
/**
  * 根据选择器匹配的字符串返回
* Element(单个元素)
* @param document
* @param selectStr 选择器(类似于JQuery)
* @return
*/
public static Element getSingleElementBySelectStr(Document document,String selectStr)
{
Elements elements=getMoreElementsBySelectStr(document,selectStr);
if(elements!=null&&elements.size()>0){
return elements.get(0);
}
else
{
return null;
}
}

/**
  * 根据选择器匹配的字符串返回
* Element(单个元素)
* @param element
* @param selectStr
* @return
*/
public static Element getSingleElementBySelectStr(Element element,String selectStr)
{
Elements elements=getMoreElementsBySelectStr(element,selectStr);
if(elements!=null&&elements.size()>0){
return elements.get(0);
}
else
{
return null;
}
}
/**
* 根据选择器匹配的字符串返回单个元素的Html字符串
* @param document
* @param selectStr 选择器(类似于JQuery)
* @return
*/
public static String getSingleElementHtmlBySelectStr(Document document,String selectStr)
{
Element element=getSingleElementBySelectStr(document,selectStr);
if(element!=null)
{
return element.html();
}
else
{
return null;
}
}

/**
* 根据选择器匹配的字符串返回单个元素的Html字符串
* @param element
* @param selectStr
* @return
*/
public static String getSingleElementHtmlBySelectStr(Element element,String selectStr)
{
Element ele=getSingleElementBySelectStr(element,selectStr);
if(ele!=null)
{
return ele.html();
}
else
{
return null;
}
}

/**
* 根据元素属性名key获取元素属性名value
* @param element
* @param attributeName
* @return
*/
public static String getAttributeValue(Element element,String attributeName)
{
String attributeValue=null;
if(element!=null&&attributeName!=null&&!"".equals(attributeName))
{
attributeValue=element.attr(attributeName);
}
return attributeValue;
}

/**
* 从elements集合中获取element并解析成HTML字符串
* @param elements
* @return
*/
public static String getSingElementHtml(Elements elements){
Element ele=null;
String htmlStr=null;
if(elements!=null&&elements.size()>0)
{
ele=elements.get(0);
htmlStr=ele.html();
}
return htmlStr;
}
/**
* 从elements集合中获取element并解析成Text字符串
* @param elements
* @return
*/
public static String getSingElementText(Elements elements){
Element ele=null;
String htmlStr=null;
if(elements!=null&&elements.size()>0)
{
ele=elements.get(0);
htmlStr=ele.text();
}
return htmlStr;
}
public static void main(String[] args)
{
File file=new File("F:/example.htm");
try {
Document document=Jsoup.parse(file,"GB2312");
Pattern pattern=Pattern.compile("");
// document.getElementsByAttributeValueMatching("", pattern);
Element element=getElementById(document,"personal-uplayer");


} catch (IOException e) {
e.printStackTrace();
}
}
}
分享到:
评论

相关推荐

    jsoup简单封装

    3. **解析HTML**:封装类会使用`Jsoup.parse()`来解析HTML,返回一个`Document`对象。 4. **选择器和提取**:封装类可能提供一系列的方法,通过CSS选择器来选取元素并提取数据。 5. **错误处理**:封装类会包含...

    ksoup,jsoup的kotlin包装器.zip

    KSoup是一个基于Kotlin的库,它是对Java库JSoup的封装,提供了更加简洁、直观且符合Kotlin编程习惯的API。JSoup是一个非常流行的库,用于处理HTML文档,进行解析、提取数据以及修改HTML结构。KSoup的出现使得Kotlin...

    html转pdf工具类

    1. **HTML解析**:首先,工具需要能够解析HTML代码,理解其结构和样式信息。这可能依赖于像Jsoup这样的HTML解析库,它能够处理HTML标记并提取所需的数据。 2. **CSS渲染**:HTML的视觉呈现主要由CSS(层叠样式表)...

    java 读取html过滤标签

    为了便于复用,可以创建一个工具类,封装读取和过滤HTML的功能。例如: ```java public class HtmlFilter { public static String filterHtmlTags(String html, String... tagsToFilter) { // 使用Jsoup或其他...

    Html转wordDemo和相关jar包

    在实际项目中,可以创建一个自定义的转换类,封装以上步骤,提供一个简单的API供其他代码调用。这样不仅可以解决断网图片显示问题,还能方便地进行进一步的定制和优化,比如调整样式、处理特殊标签等。 总的来说,...

    根据jxl,对html中的table进行导出excel

    Jsoup能够解析HTML文档,通过CSS选择器定位到目标表格,并提取出相关的数据。你可以创建一个工具类,定义一个方法,接收HTML字符串作为参数,使用Jsoup解析出表格的行和列数据。 接着,我们需要引入jxl库,这是一个...

    java 爬虫类

    2. **HTML解析**:Java中有多种库可用于解析HTML,如Jsoup和HtmlUnit。Jsoup是一个非常流行的库,它提供了CSS选择器和DOM操作,使得解析HTML变得简单易懂。HtmlUnit是一个无头浏览器,可以执行JavaScript,对于需要...

    用jsoup框架进行音乐网站的数据爬取。以及用spring-boot+JDBC封装搭建音乐网站平台系统。.zip

    开发者可能已经定义了音乐、艺术家、专辑等相关实体类,并创建了对应的Controller、Service和Repository层,实现了增删改查等功能。同时,`Jsoup`爬取的音乐数据可能会被导入到这个平台,供用户浏览和搜索。 总的来...

    capture-demo:数据抓取 jsoup capture, json javabean 转换

    1. **Jsoup**:Jsoup提供了强大的API来解析HTML文档,可以方便地查找、提取和修改HTML元素。在数据抓取场景下,Jsoup能够帮助我们获取网页上的特定数据,如文章内容、链接、图片等。 2. **数据抓取**:数据抓取是...

    html转图片的jar包.zip

    虽然Jsoup本身并不直接支持HTML转图片,但可以通过结合其他库(如JavaFX或Batik),先使用Jsoup解析HTML,然后利用其他库进行转换。 4. **Headless Browser**:在某些情况下,可以使用无头浏览器(如Puppeteer for ...

    好程序员Java教程之如何用Jsoup实现爬虫技术

    **解析HTML与Jsoup** Jsoup的核心是`parse()`方法,它接受一个包含HTML的字符串,返回一个`Document`对象,这个对象就像HTML文档的DOM树。`Document`对象提供了丰富的API来遍历和选择元素,例如`select()`方法可以...

    Java HTML直接导出PDF

    `PDFUtil.java`很可能就是实现了这样的转换功能的一个工具类。下面将分别介绍这些库并讨论可能的实现方式。 1. **iText**: iText是一个强大的PDF库,它可以直接创建、修改和操作PDF文档。然而,iText并不直接支持...

    jsonp源码以及jar包

    1. **DOM解析**:`jsoup`使用DOM模型解析HTML,这意味着它可以像处理XML一样处理HTML。你可以通过元素选择器(如`getElementById`、`getElementsByTag`等)找到页面上的特定部分。 2. **CSS选择器**:`jsoup`支持...

    spider网络爬虫

    HTML是网页的主要结构语言,爬虫需要解析HTML以获取所需信息。Java中常用的HTML解析库有Jsoup,它提供了简洁的API来提取和操作DOM元素。 **4. 请求发送** Java的`java.net`包中的`HttpURLConnection`或第三方库如...

    htmlparser的jar包

    之后,通过`import`语句引入所需的类,就可以开始使用HTMLParser解析HTML文档了。 总的来说,HTMLParser是一个强大且灵活的工具,适用于需要解析和操作HTML的Java应用,如爬虫、数据提取、网页自动化等场景。通过...

    Java编写的HTML浏览器.zip

    4. **HTML解析**:可能使用`java.nio`包进行文件读取,或者使用如Jsoup这样的库解析HTML文档。HTML解析器将HTML代码转化为结构化的数据,以便浏览器呈现。 5. **线程管理**:浏览器可能需要并发处理多个网络请求,...

    java爬虫

    这些工具能够解析HTML文档,提取所需信息,并模拟浏览器发送HTTP请求。 1. Jsoup: Jsoup是一款强大的Java库,用于处理实际世界中的HTML。它提供了方便的API,用于抓取和解析HTML,包括元素选择、属性获取、文本提取...

    网易新闻首页爬虫开发包

    综合以上信息,我们可以了解到这个开发包主要利用Jsoup库,通过网络连接模块访问网易新闻的网页,解析HTML内容,提取出滚动新闻和头条区的新闻信息,然后将这些信息封装成`MessageItem`对象,供`MainActivity`展示。...

    easypoi的使用demo,包含Excel模板导出,html导出Excel,Excel导出pdf等

    首先,你需要将HTML内容转换为表格数据结构,例如使用Jsoup解析HTML获取表格元素。然后,利用Easy POI的API,创建一个Excel工作簿对象,将HTML表格数据逐行逐列地写入工作表。`EasyExcel.readSource(htmlTableData)....

    JavaParseHtml.zip

    我们需要了解如何导入和使用Jsoup库,以及如何解析HTML元素,特别是`<title>`标签。 3. **文件I/O操作**:在Java中,处理文件需要使用`java.io`包中的类,如`File`、`BufferedReader`和`FileWriter`等。我们需要...

Global site tag (gtag.js) - Google Analytics