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. [编辑中] 免费的Internet流量发生器 | Free Internet Traffic Generators

    流量发生器 (Traffic Generator) 是用来检测网络性能,进行网络相关研究的一个很重要的工具.大家可能用过Iperf或者IxChariot,前者是类UNIX环境下的一个免费.开源的网络性 ...

  2. 手机软件记事本(SuperNotepad)的使用教程

    软件简介: 手机应用记事本(SuperNotepad)类似电脑应用notepad, 可用于文本阅读和编辑新建电子书(本应用限文本txt文件),是阅读小说和便签记录的好帮手. 电子书阅读器及便签的手机应 ...

  3. QT中关于窗口全屏显示与退出全屏的实现

    近期在学习QT时遇到了很多问题这也是其中一个,个人通过在各种书籍和网络上的查阅找到了一些关于这方面的答案,希望能给大家一些帮助. 首先,在QT中对于窗口显示常用的有这么几个方法可以调用: Qt全屏显示 ...

  4. Java基础知识强化57:经典排序之希尔排序(ShellSort)

    1. 希尔排序的原理: 希尔排序(Shell Sort)是插入排序的一种.也称缩小增量排序,是直接插入排序算法的一种更高效的改进版本.希尔排序是非稳定排序算法.该方法因DL.Shell于1959年提出 ...

  5. datagrid数据导出到excel文件给客户端下载的几种方法

    方法一:导出到csv文件,存放在服务器端任一路径,然后给客户下载 优点: 1.可以进行身份认证后给客户下载,如果放到非web目录就没有对应的url,客户无法随时下载. 2.也是因为生成了文件,所以占用 ...

  6. JAVA--好友界面面板

    package GongYou; //package windows.best_demo; import java.awt.*; import javax.swing.*; import java.u ...

  7. (转)asp.net动态设置标题title 关键字keywords 描述descrtptions

    方法一 if (!IsPostBack){//Page title网页标题Page.Title = “我的网站标题”;//须将网页head标签设成服务器控件模式,即<head runat=&qu ...

  8. ORACLE用户操作的一些常用操作总结【weber出品】

    一.创建一个表空间 create tablespace pioneer_data datafile '/u01/datafile/pioneer_datadbf' size 100m autoexte ...

  9. 使用UISegementControl实现简易汤姆猫程序

    // // TomViewController.m #import "TomViewController.h" #import <AVFoundation/AVFoundat ...

  10. progit-zh(Git中文文档)

    发现好像在墙外,还是下载下来看会快点 链接: http://pan.baidu.com/s/1o8EiDMq 密码: vzf9