- 浏览: 312313 次
- 性别:
- 来自: 武汉
文章分类
- 全部博客 (185)
- C# (8)
- Java (21)
- Oracle (25)
- mysql (3)
- SQLite (9)
- PHP (0)
- 虚拟机 (6)
- Tomcat (5)
- WebService (9)
- Linux (4)
- Windows (0)
- 域名和空间 (5)
- 测试 (1)
- Javascript (2)
- cache (1)
- 认证 (1)
- 图形报表 (1)
- Eclipse&plugins (1)
- struts2 (2)
- Swing (2)
- maven (1)
- BAT (3)
- JqueryUI (1)
- WEB (1)
- Jquery (1)
- 软件 (1)
- Google (1)
- sitemesh (1)
- Spring (1)
- 字体 (1)
- log4j (1)
- 日志级别 (1)
- 控制中心 (1)
- Log4jManager (1)
- log4j.jsp (1)
最新评论
-
chao_t:
不可以喃,楼主
实时控制log4j日志输出级别-Log4J日志级别控制中心 -
zercle:
感谢分享,还在下载中,一直都用plsql,昨天听别人说toad ...
Toad for Oracle 11绿色版本,加上plsql developerv9.0.1.1613 -
cmland:
赞一个,可以使用
Toad for Oracle 11绿色版本,加上plsql developerv9.0.1.1613 -
mozheshashou:
大哥 关键是那个服务器端怎么写啊 ,求指教啊,
说说JSON和JSONP,也许你会豁然开朗,含jQuery用例 -
bjxyj:
net.sourceforge.jdbclogger.Jdbc ...
p6spy的替代品:jdbc logger
jsoup 是一款 Java 的HTML 解析器,可直接解析某个URL地址、HTML文本内容。它提供了一套非常省力的API,可通过DOM,CSS以及类似于JQuery的操作方法来取出和操作数据。请参考: http://jsoup.org/
jsoup的主要功能如下:
从一个URL,文件或字符串中解析HTML;
使用DOM或CSS选择器来查找、取出数据;
可操作HTML元素、属性、文本;
jsoup是基于MIT协议发布的,可放心使用于商业项目。
下载和安装:
maven安装方法:
把下面放入pom.xml下
<dependency>
<!-- jsoup HTML parser library @ http://jsoup.org/ -->
<groupId>org.jsoup</groupId>
<artifactId>jsoup</artifactId>
<version>1.5.2</version>
</dependency>
用jsoup解析html的方法如下:
解析url html方法
Document
doc
=
Jsoup
.
connect
(
"http://example.com"
)
.
data
(
"query"
,
"Java"
)
.
userAgent
(
"Mozilla"
)
.
cookie
(
"auth"
,
"token"
)
.
timeout
(
3000
)
.
post
();
从文件中解析的方法:
File
input
=
new
File
(
"/tmp/input.html"
);
Document
doc
=
Jsoup
.
parse
(
input
,
"UTF-8"
,
"http://example.com/"
);
类试js jsoup提供下面方法:
-
getElementById(String id) 用id获得元素
-
getElementsByTag(String tag) 用标签获得元素
-
getElementsByClass(String className) 用class获得元素
-
getElementsByAttribute(String key) 用属性获得元素
同时还提供下面的方法提供获取兄弟节点:
siblingElements()
, firstElementSibling()
, lastElementSibling()
;nextElementSibling()
, previousElementSibling()
用下面方法获得元素的数据:
-
attr(String key)
获得元素的数据 -
attr(String key, String value)
t设置元素数据 -
attributes()
获得所以属性 -
id()
,className()
classNames() 获得id class得值
-
text() 获得文本值
-
text(String value)
设置文本值 -
html()
获取html -
html(String value) 设置html
-
outerHtml()
获得内部html -
data() 获得数据内容
-
tag()
获得tag 和tagName() 获得tagname
操作html提供了下面方法:
-
append(String html)
,prepend(String html)
-
appendText(String text)
,prependText(String text)
-
appendElement(String tagName)
,prependElement(String tagName)
-
html(String value)
File
input
=
new
File
(
"/tmp/input.html"
);
Document
doc
=
Jsoup
.
parse
(
input
,
"UTF-8"
,
"http://example.com/"
);
Elements
links
=
doc
.
select
(
"a[href]"
);
// a with href
Elements
pngs
=
doc
.
select
(
"img[src$=.png]"
);
// img with src ending .png
Element
masthead
=
doc
.
select
(
"div.masthead"
).
first
();
// div with class=masthead
Elements
resultLinks
=
doc
.
select
(
"h3.r > a"
);
// direct a after h3
支持的操作有下面这些:
-
tagname 操作tag
-
ns|tag ns或tag
-
#id 用id获得元素
-
.class 用class获得元素
-
[attribute] 属性获得元素
-
[^attr]
: 以attr开头的属性 -
[attr=value] 属性值为
value -
[attr^=value]
,[attr$=value]
,[attr*=value]
-
[attr~=regex]正则
-
*
:所以的标签
选择组合
-
el#id el和id定位
-
el.class e1和class定位
-
el[attr]
e1和属性定位 -
ancestor child
ancestor下面的 child
- public void parse(String urlStr) {
- // 返回结果初始化。
- Document doc = null ;
- try {
- doc = Jsoup
- .connect(urlStr)
- .userAgent(
- "Mozilla/5.0 (Windows; U; Windows NT 5.1; zh-CN; rv:1.9.2.15)" ) // 设置User-Agent
- .timeout(5000 ) // 设置连接超时时间
- .get();
- } catch (MalformedURLException e) {
- log.error( e);
- return ;
- } catch (IOException e) {
- if (e instanceof SocketTimeoutException) {
- log.error( e);
- return ;
- }
- if (e instanceof UnknownHostException){
- log.error(e);
- return ;
- }
- log.error( e);
- return ;
- }
- system.out.println(doc.title());
- Element head = doc.head();
- Elements metas = head.select("meta" );
- for (Element meta : metas) {
- String content = meta.attr("content" );
- if ( "content-type" .equalsIgnoreCase(meta.attr( "http-equiv" ))
- && !StringUtils.startsWith(content, "text/html" )) {
- log.debug( urlStr);
- return ;
- }
- if ( "description" .equalsIgnoreCase(meta.attr( "name" ))) {
- system.out.println(meta.attr("content" ));
- }
- }
- Element body = doc.body();
- for (Element img : body.getElementsByTag( "img" )) {
- String imageUrl = img.attr("abs:src" ); //获得绝对路径
- for (String suffix : IMAGE_TYPE_ARRAY) {
- if (imageUrl.indexOf( "?" )> 0 ){
- imageUrl=imageUrl.substring(0 ,imageUrl.indexOf( "?" ));
- }
- if (StringUtils.endsWithIgnoreCase(imageUrl, suffix)) {
- imgSrcs.add(imageUrl);
- break ;
- }
- }
- }
- }
这里重点要提的是怎么获得图片或链接的决定地址:
如上获得绝对地址的方法String imageUrl = img.attr("abs:src");//获得绝对路径 ,前面添加abs:jsoup就会获得决定地址;
想知道原因,咱们查看下源码,如下:
- //该方面是先从map中找看是否有该属性key,如果有直接返回,如果没有检查是否
- //以abs:开头
- public String attr(String attributeKey) {
- Validate.notNull(attributeKey);
- if (hasAttr(attributeKey))
- return attributes.get(attributeKey);
- else if (attributeKey.toLowerCase().startsWith( "abs:" ))
- return absUrl(attributeKey.substring( "abs:" .length()));
- else return "" ;
- }
接着查看absUrl方法:
- /**
- * Get an absolute URL from a URL attribute that may be relative (i.e. an <code><a href></code> or
- * <code><img src></code>).
- * <p/>
- * E.g.: <code>String absUrl = linkEl.absUrl("href");</code>
- * <p/>
- * If the attribute value is already absolute (i.e. it starts with a protocol, like
- * <code>http://</code> or <code>https://</code> etc), and it successfully parses as a URL, the attribute is
- * returned directly. Otherwise, it is treated as a URL relative to the element's {@link #baseUri}, and made
- * absolute using that.
- * <p/>
- * As an alternate, you can use the {@link #attr} method with the <code>abs:</code> prefix, e.g.:
- * <code>String absUrl = linkEl.attr("abs:href");</code>
- *
- * @param attributeKey The attribute key
- * @return An absolute URL if one could be made, or an empty string (not null) if the attribute was missing or
- * could not be made successfully into a URL.
- * @see #attr
- * @see java.net.URL#URL(java.net.URL, String)
- */
- //看到这里大家应该明白绝对地址是怎么取的了
- public String absUrl(String attributeKey) {
- Validate.notEmpty(attributeKey);
- String relUrl = attr(attributeKey);
- if (!hasAttr(attributeKey)) {
- return "" ; // nothing to make absolute with
- } else {
- URL base;
- try {
- try {
- base = new URL(baseUri);
- } catch (MalformedURLException e) {
- // the base is unsuitable, but the attribute may be abs on its own, so try that
- URL abs = new URL(relUrl);
- return abs.toExternalForm();
- }
- // workaround: java resolves '//path/file + ?foo' to '//path/?foo', not '//path/file?foo' as desired
- if (relUrl.startsWith( "?" ))
- relUrl = base.getPath() + relUrl;
- URL abs = new URL(base, relUrl);
- return abs.toExternalForm();
- } catch (MalformedURLException e) {
- return "" ;
- }
- }
- }
发表评论
-
Java 实现快递查询 (免费) ,不用输入验证码
2013-05-25 21:54 1659查快递的时候发现了一个http://www.kaidi10 ... -
实时控制log4j日志输出级别-Log4J日志级别控制中心
2013-01-27 01:45 2405动态控制Log4J日志级别,只需要一个JSP页面 ... -
动态加载配置文件类,通用类
2012-07-21 12:13 2217package config; import java. ... -
Java 修复HTML标签
2012-07-03 14:15 1772开源的组件:http://sourceforge.net/pr ... -
正则表达式中的java 转义字符
2012-05-08 22:19 1678java 的转义字符,在正则表达式中应用 ... -
java解析SQL脚本
2012-05-08 22:17 1562/** * 执行初始化SQL脚本 * @param ... -
Protocol Buffer入门——轻松搭建java环境
2012-04-19 21:49 1234Protocol Buffer入门—— ... -
Jersey framework开发RESTFUL应用
2012-04-19 21:46 1419本文演示环境为eclipse + Maven插件 + J ... -
RMI、Hessian、Burlap、Httpinvoker、WebService的比較
2012-04-09 19:56 2891RMI、Hessian、Burlap、Httpin ... -
一个开源的Java快速开发平台
2012-04-10 09:24 1985http://www.j-hi.net/ J-HI是一 ... -
apache common DurationFormatUtils
2012-04-01 10:42 1190日期相減(兩日期相差多少天,月,年): Date d1 ... -
使用Perf4J进行性能分析和监控
2012-04-01 10:20 1007使用Perf4J进行性能分析和监控 作者 ... -
struts2-redirect和redirect-action的一点区别
2012-03-15 14:23 748struts2-redirect和redirect-actio ... -
t150ckh request.getHeader("user-agent")解析浏览器
2012-03-07 20:18 19972public class BrowseTool { ... -
收邮件、更改邮件标志 javamai +imap
2011-05-09 12:17 1576来源:http://blog.csdn.net/su ... -
UrlRewriteFilter 学习笔记
2011-01-18 16:18 17301、简介 UrlRewriteFilter是 ... -
java.lang.SecurityException: Prohibited package name
2011-01-02 15:39 3075问题 java.lang.SecurityExceptio ... -
Java 线程Join的用法
2010-11-18 10:11 1022在上面的例子中多次使用到了Thread类的join方法。我想大 ... -
Java 守护线程与非守护线程的区别
2010-11-18 10:05 2489ublic static void main ... -
关于JAVA中enum枚举类型的思考
2010-10-31 09:58 1369package utils; /** * @ ...
相关推荐
基于java的开发源码-HTML解析器 jsoup.zip 基于java的开发源码-HTML解析器 jsoup.zip 基于java的开发源码-HTML解析器 jsoup.zip 基于java的开发源码-HTML解析器 jsoup.zip 基于java的开发源码-HTML解析器 jsoup.zip ...
jsoup 是一款 Java 的 HTML 解析器,可直接解析某个 URL 地址、HTML 文本内容。它提供了一套非常省力的 API,可通过 DOM,CSS 以及类似于 jQuery 的操作方法来取出和操作数据。 jsoup 的主要功能如下: 1. 从一个 ...
Java HTML解析工具Jsoup是一个强大的库,专门设计用于处理HTML文档,提取和操作数据。它提供了类似于DOM、CSS以及jQuery的API,使得在Java中处理HTML变得简单易行。Jsoup能够连接到网页,下载HTML内容,然后进行解析...
jsoup:Java HTML 解析器 jsoup是一个用于处理现实世界 HTML 的 Java 库。它使用最好的 HTML5 DOM 方法和 CSS 选择器,提供了一个非常方便的 API,用于获取 URL 以及提取和操作数据。 jsoup实现了WHATWG HTML5规范...
**jsoup Java HTML解析器详解** jsoup是一个用于处理实际世界HTML的Java库。它提供了非常方便的方法来提取和操作数据,使用DOM,CSS以及类似于jQuery的API。jsoup能够理解HTML的不完美之处,同时提供了强大的功能来...
jsoup是一款Java的HTML解析器,可直接解析某个URL地址、HTML文本内容。它提供了一套非常省力的API,可通过DOM,CSS以及类似于jQuery的操作方法来取出和操作数据。 Jsoup的主要功能 1)从一个URL,文件或字符串中...
jsoup是Java开发者的一款利器,它是一个高效且功能丰富的HTML解析库。这个工具能够帮助开发者轻松地处理网页内容,提取有用的数据,并进行相应的操作。jsoup的核心特性在于它的易用性和灵活性,使得即便是不熟悉DOM...
Jsoup HTML解析器For Java 在Java程序中使用JQuery操作DOM 模式识别的新技术 狂顶
**jsoup:Java的HTML解析库** jsoup是一款强大的Java库,专为处理HTML文档而设计。它允许开发者轻松地解析、提取和修改HTML内容,就像在Web浏览器中使用jQuery那样方便。jsoup的主要功能包括: 1. **HTML解析**:...
jsoup 是一款 Java 的HTML 解析器,可直接解析某个URL地址、HTML文本内容。它提供了一套非常省力的API,可通过DOM,CSS以及类似于JQuery的操作方法来取出和操作数据。 jsoup的主要功能如下: 从一个URL,文件或...
Jsoup是一款Java库,它为了解析、提取以及操作HTML提供了强大的工具。在Web开发中,我们常常需要处理各种HTML文档,比如抓取网页数据、自动化测试或是构建爬虫。Jsoup以浏览器的方式解析HTML,使得我们可以方便地...
jsoup 是一款Java 的HTML解析器,可直接解析某个URL地址、HTML文本内容。它提供了一套非常省力的API,可通过DOM,CSS以及类似于jQuery的操作方法来取出和操作数据。 同样可以操作xml等。
JAVA源码HTML解析器jsoupJAVA源码HTML解析器jsoup
java资源HTML解析器 jsoupjava资源HTML解析器 jsoup提取方式是百度网盘分享地址
Jsoup是一款强大的Java库,专为处理HTML文档而设计,同时也支持XML解析。它提供了简单易用的API,使得开发者可以方便地抓取、解析、修改以及清理HTML内容。Jsoup能够模拟浏览器的行为,理解HTML文档的结构,并通过...
在IT行业中,HTML解析是一项常见的任务,特别是在网络数据抓取和网页内容处理的场景下。Java作为一门广泛应用的编程语言,提供了多种库来处理这项工作,其中之一就是jSoup。本篇将详细介绍jSoup库在Java中解析HTML的...
jsoup 是一款Java 的HTML解析器,可直接解析某个URL地址、HTML文本内容。它提供了一套非常省力的API,可通过DOM,CSS以及类似于jQuery的操作方法来取出和操作数据。
jsoup 是一款 Java 的HTML 解析器,可直接解析某个URL地址、HTML文本内容。它提供了一套非常省力的API,可通过DOM,CSS以及类似于JQuery的操作方法来取出和操作数据。. jsoup 1.9.2 发布,改进内容包括: 改进: ...
jsoup 是一款 Java 的 HTML 解析器,可直接解析某个 URL 地址、HTML 文本内容。它提供了一套非常省力的 API,可通过 DOM,CSS 以及类似于 jQuery 的操作方法来取出和操作数据。 jsoup 可以从包括字符串、URL 地址...
**JSoup:Java的HTML解析库** JSoup是一款强大的Java库,专为处理现实世界中的HTML而设计。它提供了一种简洁的API,用于提取和操作数据,使用DOM,CSS,以及jQuery式的语法。在现代Web开发中,尤其是在网页抓取、...