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

Jsoup的官方中文地址:http://www.open-open.com/jsoup/parse-document-from-string.htm

在这个网站上你可以找到一些说明,.jar文件的下载,doc文档的说明等等

jsoup的主要功能如下:

   1. 从一个URL,文件或字符串中解析HTML;

   2. 使用DOM或CSS选择器来查找、取出数据;

   3. 可操作HTML元素、属性、文本;

   jsoup是基于MIT协议发布的,可放心使用于商业项目。

下面是一个纯java代码的例子,经测试可用:

  1. public static void main(String[] args) throws IOException {
  2. try {
  3. Document doc = Jsoup.connect("http://passover.blog.51cto.com/").get();
  4. System.out.println(doc.title());
  5. Elements eles = doc.select("div.artHead");
  6. System.out.println(eles.first().select("h3[class=artTitle]"));
  7. } catch (IOException e) {
  8. e.printStackTrace();
  9. }
  10. }

注意:在运行的时候会出现下面这个错误: android.os.NetworkOnMainThreadException 这是因为Android4.0不支持在UI线程中访问网络。怕线程阻塞假死!有两个方法可以解决,一个是在主程序中增加:

// 详见StrictMode文档

  1. StrictMode.setThreadPolicy(new StrictMode.ThreadPolicy.Builder()
  2. .detectDiskReads()
  3. .detectDiskWrites()
  4. .detectNetwork()   // or .detectAll() for all detectable problems
  5. .penaltyLog()
  6. .build());
  7. StrictMode.setVmPolicy(new StrictMode.VmPolicy.Builder()
  8. .detectLeakedSqlLiteObjects()
  9. .detectLeakedClosableObjects()
  10. .penaltyLog()
  11. .penaltyDeath()
  12. .build());

另一种是启动线程执行下载任务:

public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.main);

// 启动线程执行下载任务

new Thread(downloadRun).start();

}

/**

* 下载线程

*/

Runnable downloadRun = new Runnable(){

@Override

public void run() {

// TODO Auto-generated method stub

updateListView();

}

};

出现错误二:11-05 19:03:36.299: E/AndroidRuntime(20215): java.lang.RuntimeException: Can't create handler inside thread that has not called Looper.prepare()

在报错的方法前加Looper.prepare();

// 方法末尾加Looper.loop();

Jsoup类下面的方法都是静态可直接调用。几个方法的说明

Connect()方法,获得一个Connection,然后调用Connection对象get()方法获得Document对象。然后再解析Document对象

Connection提供了一些设置方法timeout(),url()等等

Jsoup一些类的说明:

Document:extends Element。一个HTML文档。即你发送请求时,Server发给你的数据。同样也可以调用Element的方法。常用方法:

body(),head(),nodeName(),title(),title(String title)

Elements:获得的HTML的各个元素的集合。通过Element.select(String str)获取相应元素值

Element first():返回第一个匹配的元素,如果为空,则返回null

String  text():返回所有匹配元素的混好text值

Element get(int index);

String  attr(String attributeKey);

Element:HTML element由tag name, attributes, child nodes(including text nodes and other elements)。由Element,可以提取数据,理清节点图,操作HTML。

text(); 返回String类型

getElementsByClass(String class);

getAllElements(); 都返回Elements对象

getElementsByAttribute(String key);

Elements select(String selector); 根据匹配的selector选择相应的Elements

异常的详细信息如下:

Exception Details:android.view.ViewRoot$CalledFromWrongThreadException: Only the original thread that created a view hierarchy can touch its views.

进行多线程编程时,经常需要在主线程之外的一个单独的线程中进行某些处理,然后更新用户界面显示。但是,在主线线程之外的线程中直接更新页面显示的问题是:系统会报这个异常

也就是说必须在程序的主线程(也就是ui线程)中进行更新界面显示的工作。可以采用下面的方法之一来解决:无法在子线程中更新UI。为此,我们需要通过Handler物件,通知主线程Ui Thread来更新界面。

  1. private Handler mHandler = new Handler(){
  2. @Override
  3. public void handleMessage(Message msg){
  4. switch (msg.what){
  5. case UPDATE_UI:{
  6. Log.i("TTSDeamon", "UPDATE_UI");
  7. showTextView.setText(editText.getText().toString());
  8. ShowAnimation();
  9. break;
  10. }
  11. default:
  12. break;
  13. }
  14. }
  15. }

demo地址0分下载:http://download.csdn.net/detail/zqiang_55/4764266

同时推荐一个应用:http://www.talkphone.cn/Down/Soft/Android/Detail/49172_0.html

Android_HTML解析器_jsoup的更多相关文章

  1. XML技术之DOM4J解析器

    由于DOM技术的解析,存在很多缺陷,比如内存溢出,解析速度慢等问题,所以就出现了DOM4J解析技术,DOM4J技术的出现大大改进了DOM解析技术的缺陷. 使用DOM4J技术解析XML文件的步骤? pu ...

  2. AFN解析器里的坑

    AFN框架是用来用来发送网络请求的,它的好处是可以自动给你解析JSON数据,还可以发送带参数的请求AFN框架还可以监测当前的网络状态,还支持HTTPS请求,分别对用的类为AFNetworkReacha ...

  3. SpringMVC视图解析器

    SpringMVC视图解析器 前言 在前一篇博客中讲了SpringMVC的Controller控制器,在这篇博客中将接着介绍一下SpringMVC视 图解析器.当我们对SpringMVC控制的资源发起 ...

  4. XML技术之SAX解析器

    1.解析XML文件有三种解析方法:DOM SAX DOM4J. 2.首先SAX解析技术只能读取XML文档中的数据信息,不能对其文档中的数据进行添加,删除,修改操作:这就是SAX解析技术的一个缺陷. 3 ...

  5. 学习SpringMVC——说说视图解析器

    各位前排的,后排的,都不要走,咱趁热打铁,就这一股劲我们今天来说说spring mvc的视图解析器(不要抢,都有位子~~~) 相信大家在昨天那篇如何获取请求参数篇中都已经领略到了spring mvc注 ...

  6. SpringMVC入门案例及请求流程图(关于处理器或视图解析器或处理器映射器等的初步配置)

    SpringMVC简介:SpringMVC也叫Spring Web mvc,属于表现层的框架.Spring MVC是Spring框架的一部分,是在Spring3.0后发布的 Spring结构图 Spr ...

  7. [LeetCode] Mini Parser 迷你解析器

    Given a nested list of integers represented as a string, implement a parser to deserialize it. Each ...

  8. Duilib源码分析(三)XML解析器—CMarkup

    上一节介绍了控件构造器CDialogBuilder,接下来将分析其XML解析器CMarkup: CMarkup:xml解析器,目前内置支持三种编码格式:UTF8.UNICODE.ASNI,默认为UTF ...

  9. CozyRSS开发记录9-快速实现一个RSS解析器

    CozyRSS开发记录9-快速实现一个RSS解析器 1.再读RSS标准 既然需要自己实现一个RSS解析器,那自然需要仔细的读一读RSS的标准文档.在网上随便找了两份,一份英文一份中文: http:// ...

随机推荐

  1. Redis起步

    Rdis和JQuery一样是纯粹为应用而产生的,这里记录的是在CentOS 5.7上学习入门文章: 1.Redis简介  Redis是一个key-value存储系统.和Memcached类似,但是解决 ...

  2. Node.js 实现简单小说爬虫

    最近因为剧荒,老大追了爱奇艺的一部网剧,由丁墨的同名小说<美人为馅>改编,目前已经放出两季,虽然整部剧槽点满满,但是老大看得不亦乐乎,并且在看完第二季之后跟我要小说资源,直接要奔原著去看结 ...

  3. USB HID Report Descriptor 报告描述符详解

    Report descriptors are composed of pieces of information. Each piece of information is called an Ite ...

  4. Windows server 2008系统下FTP服务器的安装

    一.在 Windows 服务器上安装 FTP 服务 1. 在"开始"菜单上,单击"管理工具",然后单击"服务器管理器". 2. 在" ...

  5. 新手们的GDI+绘制方格

    //绘制panel控件触发的事件 //不可在窗体加载时绘制方格        private void panel1_Paint(object sender, PaintEventArgs e)    ...

  6. 使用VS Code开发AngularJS 2 第一个应用程序

    使用VS Code开发AngularJS 2 第一个应用程序 目录 运行环境 创建项目 安装依赖包 创建TypeScript应用程序 配置应用程序 运行应用程序 运行环境 运行环境: Windows ...

  7. 国外十个出名的 upload 上传组件

    在日常开发中,我们常会用到很多的组件及共用代码提高我们的开发效率.   King MEDIA - $ 17.00 / 11 Sales DNNStore | 6/5/2014 6:06:42 PM|  ...

  8. Collection使用方法

    package cn.stat.p3.conection.demo; import java.util.ArrayList; import java.util.Collection; import j ...

  9. (六)backbone - API学习 - Backbone路由

    Backbone路由本质 Backbone路由分为两个大块,Router以及History用户在Router中定义相关规则,然后开启history.start进行路由监控,执行默认的回调所以,Rout ...

  10. DOM 之Range(范围)

    -------<javascript高级程序设计>  12.4 范围  笔记------- DOM2级在Document类型中定义了createRange()方法,在兼容DOM的浏览器中, ...