Java使用Jsoup解析网页
2014-08-26 15:30
411 查看
jsoup 是一款Java 的HTML解析器,可直接解析某个URL地址、HTML文本内容。它提供了一套非常省力的API,可通过DOM,CSS以及类似于jQuery的操作方法来取出和操作数据。
下面是我在开发中通过Jsoup解析网页两种通用方法。
* 根据path获取单个元素
*
* @param element
* @param path
: [id=idstr]>[class*=classstr]>span#5>a
* @return
*/
public static Element
getElementByPath(Element element, String path){
if(element
== null){
return null;
}
if(path
== null || "".equals(path)){
return null;
}
if(path.contains(">")){
String[] paths = path.split(">");
if(paths
!= null &&
paths.length > 0){
for(String
p : paths){
element = getElementByPath(element,
p);
if(element
== null){
break;
}
}
}
}else{
int index
= 0;
String p = path;
if(path.contains("#")){
p = path.substring(0, path.indexOf("#"));
String indexstr = path.substring(path.indexOf("#")+1).replace("[^0-9]", "");
if(!"".equals(indexstr)){
index = Integer.valueOf(indexstr);
}
}
Elements elements = element.select(p);
if(index
> 9999){
element = elements.last();
}else{
if(elements.size()
<= index){
return null;
}
element = elements.get(index);
}
}
return element;
}
* 根据path获取多个元素
*
* @param element
* @param path
: [id=idstr]>[class*=classstr]>span#5>a
* @return
*/
public static Elements
getElementsByPath(Element element, String path){
if(element
== null){
return null;
}
if(path
== null || "".equals(path)){
return null;
}
Elements elements = null;
if(path.contains(">")){
String[] paths = path.split(">");
if(paths
!= null &&
paths.length > 0){
for(String
p : paths){
elements = getElementsByPath(element,
p);
if(elements
== null){
break;
}
int index
= 0;
if(p.contains("#")){
String indexstr = p.substring(p.indexOf("#")+1).replace("[^0-9]", "");
p = p.substring(0, p.indexOf("#"));
if(!"".equals(indexstr)){
index = Integer.valueOf(indexstr);
}
}
if(index
> 9999){
element = elements.last();
}else{
if(elements.size()
<= index){
elements = null;
break;
}
element = elements.get(index);
}
}
}
}else{
String p = path;
if(path.contains("#")){
p = path.substring(0, path.indexOf("#"));
}
elements = element.select(p);
}
return (elements
!= null &&
elements.size() > 0) ? elements : null;
}
下面是我在开发中通过Jsoup解析网页两种通用方法。
1. 获取单个元素
/*** 根据path获取单个元素
*
* @param element
* @param path
: [id=idstr]>[class*=classstr]>span#5>a
* @return
*/
public static Element
getElementByPath(Element element, String path){
if(element
== null){
return null;
}
if(path
== null || "".equals(path)){
return null;
}
if(path.contains(">")){
String[] paths = path.split(">");
if(paths
!= null &&
paths.length > 0){
for(String
p : paths){
element = getElementByPath(element,
p);
if(element
== null){
break;
}
}
}
}else{
int index
= 0;
String p = path;
if(path.contains("#")){
p = path.substring(0, path.indexOf("#"));
String indexstr = path.substring(path.indexOf("#")+1).replace("[^0-9]", "");
if(!"".equals(indexstr)){
index = Integer.valueOf(indexstr);
}
}
Elements elements = element.select(p);
if(index
> 9999){
element = elements.last();
}else{
if(elements.size()
<= index){
return null;
}
element = elements.get(index);
}
}
return element;
}
2. 获取多个元素
/*** 根据path获取多个元素
*
* @param element
* @param path
: [id=idstr]>[class*=classstr]>span#5>a
* @return
*/
public static Elements
getElementsByPath(Element element, String path){
if(element
== null){
return null;
}
if(path
== null || "".equals(path)){
return null;
}
Elements elements = null;
if(path.contains(">")){
String[] paths = path.split(">");
if(paths
!= null &&
paths.length > 0){
for(String
p : paths){
elements = getElementsByPath(element,
p);
if(elements
== null){
break;
}
int index
= 0;
if(p.contains("#")){
String indexstr = p.substring(p.indexOf("#")+1).replace("[^0-9]", "");
p = p.substring(0, p.indexOf("#"));
if(!"".equals(indexstr)){
index = Integer.valueOf(indexstr);
}
}
if(index
> 9999){
element = elements.last();
}else{
if(elements.size()
<= index){
elements = null;
break;
}
element = elements.get(index);
}
}
}
}else{
String p = path;
if(path.contains("#")){
p = path.substring(0, path.indexOf("#"));
}
elements = element.select(p);
}
return (elements
!= null &&
elements.size() > 0) ? elements : null;
}
相关文章推荐
- java 使用Jsoup解析URL网页信息
- JAVA在线抓取网页中的元素的例子(使用JSoup包进行解析)
- Java网页资源抓取例子(使用第三方包Jsoup解析Html)
- JAVA在线抓取网页中的元素的例子(使用JSoup包进行解析)
- Android:使用jsoup解析网页
- Java - 抓取优酷网视频播放页面(使用jsoup解析html,正则表达式处理字符串)
- Jsoup简介——使用Java抓取网页数据
- Jsoup简介——使用Java抓取网页数据
- java学习--网络爬虫(使用jsoup爬取网页内容)
- 使用Jsoup解析html网页
- 测试jsoup解析网页遇到的问题Invalid layout of java.lang.String at value
- android中使用JSOUP如何解析网页数据详述
- jsoup 解析html网页标签获取数据(java 网页解析 数据)
- 在java程序中使用jQuery抓取网页的新方法(java调用js解析引擎)
- java 网页解析工具包 Jsoup
- 使用httpclient jsoup 及jetty 全自动登录网站 抓取网页,解析并展示
- 使用Jsoup解析html网页
- java 网页解析工具包 Jsoup
- 使用Jsoup解析html网页
- Java使用jsoup解析html