`
lzj0470
  • 浏览: 1276585 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

jsoup

    博客分类:
  • java
 
阅读更多
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;

public class jsOup {

	private String getCssFun(String selector) {
		char[] ch = selector.toCharArray();
		boolean bool = false; // 默认没有找到CSS_FUN元素
		String findFun = null; // 找到CSS_FUN元素下标
		for (int i = 0; i < ch.length && ch.length > 5 && !bool; i++) {
			if (ch[i] == ':') {
				if (ch[i + 1] == 'e' && ch[i + 2] == 'q' && ch[i + 3] == '(') {
					// 找到:eq(
					findFun = ":eq(";
					bool = true;
				} else if (ch[i + 1] == 'g' && ch[i + 2] == 't'
						&& ch[i + 3] == '(') {
					// 找到:gt(
					findFun = ":gt(";
					bool = true;
				} else if (ch[i + 1] == 'l' && ch[i + 2] == 't'
						&& ch[i + 3] == '(') {
					// 找到:lt(
					findFun = ":lt(";
					bool = true;
				}
			}
		}
		return findFun;
	}

	/**
	 * 从父级元素中获取指定选择表达式的元素集合。 考虑情况: 多个EQ,多个LT,多个GT的情况,还有日后增加一个办法
	 * 
	 * @param selector
	 *            选择表达式
	 * @param elements
	 *            parentElement
	 * @return 返回符合选择表达式的元素集合。
	 */
	public Elements getElements(String selector, Elements parentElement)
			throws Exception {
		if (selector == null || selector.length() == 0) {
			return parentElement;
		}
		if (parentElement == null) {
			return parentElement;
		}
		selector = selector.trim();
		String findFun = getCssFun(selector);
		if (findFun == null) { // 已经找不到CSS_FUN元素
			return parentElement.select(selector);
		} else {
			int cssFunIndex = selector.indexOf(findFun);
			String first = selector.substring(0, cssFunIndex); // 获取(EQ|GT|LT)前面的字符串
			String center = selector.substring(cssFunIndex + findFun.length(),
					selector.length());
			String end = center.substring(center.indexOf(")") + 1,
					center.length()); // 获取EQ后面的字符串
			String cssFunNum = center.substring(0, center.indexOf(")"));
			if (first.length() != 0) {
				parentElement = parentElement.select(first);
			}
			if (findFun.equals(":eq(")) {
				parentElement = parentElement.eq(Integer.parseInt(cssFunNum));
			} else if (findFun.equals(":lt(")) {
				parentElement = new Elements(parentElement.subList(0,
						Integer.parseInt(cssFunNum)));
			} else if (findFun.equals(":gt(")) {
				parentElement = new Elements(parentElement.subList(
						Integer.parseInt(cssFunNum), parentElement.size()));
			}
			if (end.length() == 0) { // 处于最后,selector设置为null
				selector = null;
			} else { // CSS_FUN元素不处于最后
				selector = end;
			}
			return getElements(selector, parentElement);
		}
	}

	public void test() {
		Document doc;
		try {
			String url = "http://club.history.sina.com.cn/viewthread.php?tid=5483877&sudaref=bbs.sina.com.cn&retcode=0";
			url = "http://www.agrilink.cn/";
			doc = Jsoup.connect(url).get();
			String query = "div.myInfo_up:lt(1)";
			query = "div.myInfo_up:lt(3):lt(1)";
			query = "div.myInfo_up:lt(3):gt(1)";
			query = "div.myInfo_up:lt(3):gt(2) a";
			query = "div.myInfo_up:lt(3):gt(2) a:eq(1)";
			Elements newsHeadlines = getElements(query, doc.select("html"));// getString(query,
			// doc);//
			//
			doc.select(query);// doc.select("div.myInfo_up:eq(0)").select("font");
			int i = 0;
			for (Element element : newsHeadlines) {
				System.out.println("div=" + element.html());
				System.out.println("------------" + (i++) + "----------"
						+ element.id());
			}
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}

	public static void main(String args[]) {
		jsOup jsOup = new jsOup();
		jsOup.test();
	}

}
分享到:
评论

相关推荐

    JsoupAPI(jsoup帮助文档)

    **Jsoup API 深入解析** Jsoup 是一个用于处理和解析HTML的Java库,它提供了强大的功能,使得在Java程序中操作HTML文档变得简单而直观。在Jsoup 1.10.2版本中,这个API进一步优化了对HTML的处理能力,提供了丰富的...

    jsoup中文帮助文档

    Jsoup 提供 DOM 风格的方法(如 `getElementById()`, `getElementsByTag()`, `select(String cssQuery)` 等)来遍历 Document 对象并抽取所需数据。例如,你可以通过 CSS 选择器选取元素,然后提取它们的属性、文本...

    jsoup-1.15.3.jar

    jsoup-1.15.3.jar,jsoup-1.15.3.jar,jsoup-1.15.3.jar,jsoup-1.15.3.jar,jsoup-1.15.3.jar,jsoup-1.15.3.jar,jsoup-1.15.3.jar,jsoup-1.15.3.jar,jsoup-1.15.3.jar,jsoup-1.15.3.jar,jsoup-1.15.3.jarjsoup-...

    jsoup-jar包

    **JSoup:Java的网页抓取与解析库** JSoup是一个用Java编写的开源库,专为处理HTML文档而设计。它提供了丰富的API,使得开发者能够轻松地抓取、解析和操作网页内容。JSoup的核心功能包括从网络或本地文件系统获取...

    jsoup-1.14.3-API文档-中文版.zip

    赠送jar包:jsoup-1.14.3.jar; 赠送原API文档:jsoup-1.14.3-javadoc.jar; 赠送源代码:jsoup-1.14.3-sources.jar; 赠送Maven依赖信息文件:jsoup-1.14.3.pom; 包含翻译后的API文档:jsoup-1.14.3-javadoc-API...

    jsoup-1.11.3.jar

    `jsoup-1.11.3-javadoc.jar`包含了该版本的API文档,方便开发者查阅和理解每个方法的功能和用法,而`jsoup-1.11.3-sources.jar`则包含源代码,对于学习和调试Jsoup的内部实现非常有帮助。 Jsoup 的核心功能主要包括...

    使用jsoup获取网页内容并修改

    **使用Jsoup获取网页内容并修改** Jsoup是一款强大的Java库,它允许开发者方便地解析、操作和提取HTML内容。在Android开发中,Jsoup常用于网页数据抓取和页面内容的处理。以下将详细解释如何使用Jsoup来实现这个...

    Jsoup.jar 包及说明文档

    **Jsoup.jar 包及说明文档** Jsoup是一款在Java平台上广泛使用的HTML解析库,它的主要功能是解析HTML文档,并提供了强大的数据提取和操作能力。Jsoup的核心特性在于其能够模拟浏览器的行为,对HTML进行理解和解析,...

    IText、Jsoup jar包

    这两个库在Java开发中都有着广泛的应用,例如,IText常用于报表生成、文档自动化处理,而Jsoup则常见于网页抓取、数据解析以及网页内容的提取。将它们引入项目,可以极大地提高处理文本和文档的效率。在Java环境中,...

    Jsoup

    Jsoup的核心功能包括: 1. HTML解析:Jsoup能够解析各种各样的HTML源码,无论是干净的结构化HTML还是充满乱七八糟标签的真实网页。它能处理HTML5和HTML4,甚至一些常见的错误格式也能被正确解析。 2. DOM操作:...

    Jsoup-网络爬虫项目

    **Jsoup网络爬虫项目详解** Jsoup是一个Java库,设计用于处理真实世界的HTML,它提供了非常方便的API,用于提取和操作数据,遵循DOM、CSS以及jQuery选择器。这个项目是基于Jsoup来实现的网络爬虫,非常适合初学者...

    Jsoup 1.5.2 和jsoup 1.6

    Jsoup在Web抓取、数据分析和网页爬虫项目中广泛应用。本文将深入探讨Jsoup 1.5.2和1.6这两个版本的主要特性、变化以及如何在项目中使用它们。 首先,让我们了解Jsoup的基本功能。Jsoup的核心功能包括: 1. **HTML...

    jsoup-jsoup-1.6.1.zip

    在jsoup 1.6.1版本中,我们可以看到这个库已经相当成熟,提供了丰富的功能和优化。以下是一些关于jsoup的关键知识点: 1. **HTML解析**:jsoup的核心能力在于它强大的HTML解析机制。它使用了名为"Jsoup Parser"的...

    java org jar包 以及 org.jsoup开发包合一

    Jsoup模仿了DOM解析器的工作方式,但同时也考虑到了性能和易用性,使得在Java中处理网页内容变得更加方便。其主要功能包括: 1. HTML解析:Jsoup可以解析HTML字符串或者从URL加载HTML,生成一个可操作的DOM树。 2. ...

    Jsoup和Xpath jar包.rar

    **Jsoup详解** Jsoup(https://jsoup.org/)是一个Java库,设计用于处理真实世界的HTML。它提供了非常方便的API,用于抓取和解析数据,提取结构化信息,并修正不规范的HTML。Jsoup的主要特点包括: 1. **HTML解析*...

    Jsoup库文件;Jsoup解析Java包

    1. `jsoup.jar`:Jsoup的主要库文件,包含了所有的类和方法,导入此文件即可在项目中使用Jsoup。 2. `README.md`或`README.txt`:文件说明,介绍如何使用Jsoup以及可能的注意事项。 3. `LICENSE`:Jsoup的许可协议,...

    SpringBoot+jsoup爬虫

    **SpringBoot+Jsoup爬虫详解** 在现代Web开发中,数据抓取(或称爬虫)是一项重要的技能,尤其对于数据分析、市场研究和自动化任务。SpringBoot与Jsoup的结合提供了一个高效、灵活的解决方案来实现这个目标。本文将...

    jsoup基于java爬虫项目

    Jsoup的主要功能 1)从一个URL,文件或字符串中解析HTML 2)使用DOM或CSS选择器来查找、取出数据 3)可操作HTML元素、属性、文本 注意:jsoup是基于MIT协议发布的,可放心使用于商业项目。 Jsoup的主要功能 1)...

    Java爬虫Jsoup+httpclient获取动态生成的数据

    本文主要讲述如何利用Java编程语言中的Jsoup库和HttpClient工具包来获取和解析动态生成的数据,特别是那些通过JavaScript动态加载的数据。 ### Java爬虫基础 Java爬虫是指使用Java语言编写的一类程序,这些程序...

    jsoup1.10.3包和jsoupApi帮助文档

    **jsoup1.10.3包和jsoupApi帮助文档** Jsoup是一个非常流行的Java库,用于处理和解析HTML。在IT行业中,特别是在Web爬虫和数据抓取领域,jsoup扮演着至关重要的角色。jsoup1.10.3是这个库的一个稳定版本,提供了...

Global site tag (gtag.js) - Google Analytics