文档章节

android中jsoup解析html的几个例子

yolinfeng
 yolinfeng
发布于 2015/06/07 16:17
字数 538
阅读 23
收藏 2

1.获取百度所有链接的例子(通过ID):

public class Activity01(改成你自己的Activity) extends Activity
{
    @Override
    public void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        
        setContentView(R.layout.main);
        TextView tv = new TextView(this);
        
        String myString = null;
        StringBuffer sff = new StringBuffer();//一定要new一个,我刚开始搞忘了,出不来。
        try
        {
            Document doc = Jsoup.connect("http://www.baidu.com").get();
            Elements links = doc.select("a[href]");
			//注意这里是Elements不是Element。同理getElementById返回Element,getElementsByClass返回时Elements
            for(Element link : links){
				//这里没有什么好说的。
                sff.append(link.attr("abs:href")).append("  ").append(link.text()).append(" ");
            }
            myString = sff.toString();
        }
        catch (Exception e)
        {
            myString = e.getMessage();
            e.printStackTrace();
        }
        /**//* 将信息设置到TextView */
        tv.setText(myString);
        
        /**//* 将TextView显示到屏幕上 */
        this.setContentView(tv);
    }
}

 2.获取news.cqu.edu.cn中class为topnews 的新闻标题。

package huxiaoan.cqu.praseHtml;

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

import android.app.Activity;
import android.os.Bundle;
import android.widget.TextView;

public class HtmlActivity extends Activity {
	@Override
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.main);

		TextView tv = (TextView) findViewById(R.id.out);
		String myString = new String();

		try {
			Document doc = Jsoup.connect("http://news.cqu.edu.cn").get();
			//Elements
			Elements topnews = doc.getElementsByClass("topnews");
			//Elements
			Elements links = topnews.select("a[href]");
			for (Element link : links) {
				myString+=link.text();
				myString+="\n";
			}
			
		} catch (Exception e) {

			myString = e.getMessage();
			e.printStackTrace();
		}
		/* 将信息设置到TextView */
		tv.setText(myString);

	}
}

 3.利用session连续获取多个页面。即保持会话。

package huxiaoan.cqu.praseHtml;

import java.util.Iterator;
import java.util.Map;
import java.util.Map.Entry;

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

import android.app.Activity;
import android.os.Bundle;
import android.widget.TextView;

public class HtmlActivity extends Activity {
	@Override
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.main);

		TextView tv = (TextView) findViewById(R.id.out);
		String myString = new String();
		String sessionid = new String();
		try {
			// 登录获取sessionid
			Connection con = Jsoup.connect("http://www.jwc.cqu.edu.cn/login.asp")
					.data("username", "000")
					.data("password", "000");
			con.post();	
			sessionid = con.response().cookie("ASPSESSIONIDCCSTRTQS");
			// 查询课表(利用读取到的session值,可以实现保持会话,连续请求了。)
			Connection con_query = Jsoup
					.connect("http://www.jwc.cqu.edu.cn/PlanAndCurriculum/cour_tab_sel_stud.ASP")
					.cookie("ASPSESSIONIDCCSTRTQS", sessionid);
			// 读取内容
			Document doc = con_query.get();
			Elements fonts = doc.getElementsByTag("b");
			for (Element font : fonts) {
				myString += font.text();
			}
		} catch (Exception e) {
			myString = e.getMessage();
			e.printStackTrace();
		}
		/* 将信息设置到TextView */
		tv.setText(myString);

	}
}

 这个例子经过我无数次的测试,经常出现读不到session值的情况。耽误了我很长一段时间。

找了各种英文网站,找到了一种解决办法,我不知道以后还会不会出现问题 。解决方法是,把所有cookie的值都读出来。

Connection.Response res = Jsoup.connect("http://www.jwc.cqu.edu.cn/login.asp")
		.data("username", "000","password", "000")
		.method(Method.POST)
		.execute();
Map<String, String> cookies = res.cookies();
//如果需要 Document doc1 = res.parse();
Connection connection = Jsoup.connect("http://www.jwc.cqu.edu.cn/PlanAndCurriculum/cour_tab_sel_stud.ASP");
for (Entry<String, String> cookie : cookies.entrySet()) {
	connection.cookie(cookie.getKey(), cookie.getValue());
}
Document doc = connection.get();

 

本文转载自:http://decentway.iteye.com/blog/1333127

yolinfeng
粉丝 12
博文 196
码字总数 11946
作品 0
珠海
架构师
私信 提问
jsoup 1.8.2 发布,HTML 解析器

jsoup 1.8.2 发布,此版本提升了 Android,HTML 解析,HTML 生成,查询等方面的性能。同时添加了文件上传,W3C DOM 互操作等功能,还有其他的改进和 bug 修复。 更新内容 改进 提升 Android ...

oschina
2015/04/15
4K
22
jsoup 1.8.3 发布,HTML 解析器

jsoup 1.8.3 发布,此版本主要改进有:解析大型 HTML 文件的一些性能提升;抓取 XML 文档时,自动切换到 XML 解析器;重要 bug 修复。 更新内容: 改进 Performance improvement on parsing...

oschina
2015/08/03
4.6K
31
jsoup 1.6.1 发布,HTML解析器

jsoup 是一款 Java 的HTML 解析器,可直接解析某个URL地址、HTML文本内容。它提供了一套非常省力的API,可通过DOM,CSS以及类似于JQuery的操作方法来取出和操作数据。 jsoup的主要功能如下:...

红薯
2011/07/02
6K
0
jsoup--android程序设置防止反编译后程序崩溃

android程序中使用jsoup解析html文件正常。然而,当我将程序设置防反编译(proguard.config)后, 每次运行到含有jsoup部分时就出错。程序直接崩溃掉,不做此设置,就不会出现问题。求解!谢谢...

gghh
2012/12/22
670
0
android TextView webView 显示 html table 标签内容

1.使用jsoup解析html的table中的文本信息 2.TextView 是不支持 HTML 标签和样式的,只支持一些固定的标签和样式,之所以不使用 webview 是因为 webview 太重了,而我有好多个 TextView 后台返...

东街小霸王
2018/12/25
58
0

没有更多内容

加载失败,请刷新页面

加载更多

OSChina 周六乱弹 —— 早上儿子问我他是怎么来的

Osc乱弹歌单(2019)请戳(这里) 【今日歌曲】 @凉小生 :#今日歌曲推荐# 少点戾气,愿你和这个世界温柔以待。中岛美嘉的单曲《僕が死のうと思ったのは (曾经我也想过一了百了)》 《僕が死の...

小小编辑
今天
804
11
Excption与Error包结构,OOM 你遇到过哪些情况,SOF 你遇到过哪些情况

Throwable 是 Java 中所有错误与异常的超类,Throwable 包含两个子类,Error 与 Exception 。用于指示发生了异常情况。 Java 抛出的 Throwable 可以分成三种类型。 被检查异常(checked Exc...

Garphy
今天
15
0
计算机实现原理专题--二进制减法器(二)

在计算机实现原理专题--二进制减法器(一)中说明了基本原理,现准备说明如何来实现。 首先第一步255-b运算相当于对b进行按位取反,因此可将8个非门组成如下图的形式: 由于每次做减法时,我...

FAT_mt
昨天
6
0
好程序员大数据学习路线分享函数+map映射+元祖

好程序员大数据学习路线分享函数+map映射+元祖,大数据各个平台上的语言实现 hadoop 由java实现,2003年至今,三大块:数据处理,数据存储,数据计算 存储: hbase --> 数据成表 处理: hive --> 数...

好程序员官方
昨天
7
0
tabel 中含有复选框的列 数据理解

1、el-ui中实现某一列为复选框 实现多选非常简单: 手动添加一个el-table-column,设type属性为selction即可; 2、@selection-change事件:选项发生勾选状态变化时触发该事件 <el-table @sel...

everthing
昨天
6
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部