使用Jsoup解析html

在前面一些文章中介绍了Jsoup的一些常用类的使用:jsoup的Document类Jsoup类jsoup的Node类jsoup的Element类jsoup的Elements类。都是其常用API的翻译,这里给一个简单例子:

MainActivity:

 
  1. package com.home.testjsoup;

  2.  
  3. import java.io.IOException;

  4. import java.net.MalformedURLException;

  5. import java.net.URL;

  6.  
  7. import org.jsoup.Jsoup;

  8. import org.jsoup.nodes.Document;

  9. import org.jsoup.nodes.Element;

  10. import org.jsoup.select.Elements;

  11.  
  12. import android.app.Activity;

  13. import android.os.Bundle;

  14. import android.view.View;

  15. import android.view.View.OnClickListener;

  16. import android.widget.Button;

  17.  
  18. public class MainActivity extends Activity implements OnClickListener {

  19. private Button btn;

  20. private static final String URL_STR = "http://vip.astro.sina.com.cn/iframe/astro/view/aries/day/";

  21.  
  22. @Override

  23. protected void onCreate(Bundle savedInstanceState) {

  24. super.onCreate(savedInstanceState);

  25. setContentView(R.layout.main);

  26. btn = (Button) findViewById(R.id.main_btn);

  27. btn.setOnClickListener(this);

  28. }

  29.  
  30. @Override

  31. public void onClick(View v) {

  32. if (v == btn) {

  33. new Thread(r).start();

  34. }

  35. }

  36.  
  37. Runnable r = new Runnable() {

  38. Document doc;

  39.  
  40. @Override

  41. public void run() {

  42. try {

  43. doc = Jsoup.parse(new URL(URL_STR), 10000);

  44. } catch (MalformedURLException e) {

  45. e.printStackTrace();

  46. } catch (IOException e) {

  47. e.printStackTrace();

  48. }

  49. if (doc != null) {

  50. doParse(doc);

  51. }

  52. }

  53. };

  54.  
  55. /**

  56. * 解析html中部分内容

  57. *

  58. * @param doc

  59. */

  60. private void doParse(Document doc) {

  61. // 解析出星座描述

  62. String describe = doc.getElementsByClass("lotconts").first().text();

  63. System.out.println(describe);

  64.  
  65. // 解析出有效日期

  66. String validDate = doc.getElementsByClass("datea").first().text();

  67. System.out.println(validDate);

  68.  
  69. // 解析出星座名称和日期

  70. String constellationDate = doc.select("span").first().text();

  71. System.out.println(constellationDate);

  72.  
  73. // 解析所有class为“tab”的内容

  74. Elements elements = doc.getElementsByClass("tab");

  75. if (elements != null) {

  76. for (Element e : elements) {

  77. // 模块标题

  78. String title = e.select("h4").get(0).text();

  79. System.out.println(title);

  80.  
  81. // p标签之间的文本内容,没有则为null

  82. String pText = e.select("p").get(0).text();

  83. System.out.println(pText);

  84.  
  85. // src链接地址

  86. Elements linkText = e.select("[src]");

  87. System.out.println(linkText.attr("src"));

  88. }

  89. }

  90.  
  91. }

  92. }

猜你喜欢

转载自blog.csdn.net/u010682330/article/details/81805475