您的位置:首页 > 移动开发 > Android开发

android中jsoup解析html的几个例子

2014-11-06 21:03 260 查看
1.获取百度所有链接的例子(通过ID):

Java代码  


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 的新闻标题。

Java代码  


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连续获取多个页面。即保持会话。

Java代码  


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的值都读出来。

Java代码  


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();  
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: