Jsoup解析html终于成功了!!!
package com.eric.pickupjoke.activity; import java.io.IOException;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.HashMap;
import java.util.List;
import java.util.Locale;
import java.util.Map; import org.apache.http.HttpResponse;
import org.apache.http.HttpStatus;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.util.EntityUtils;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.nodes.TextNode;
import org.jsoup.select.Elements; import android.app.Activity;
import android.graphics.drawable.ColorDrawable;
import android.os.AsyncTask;
import android.os.Bundle;
import android.util.Log;
import android.view.Menu;
import android.widget.SimpleAdapter;
import android.widget.Toast; import com.eric.pickupjoke.conn.IsConnection;
import com.eric.pickupjoke.listview.MyListView;
import com.eric.pickupjoke.listview.MyListView.OnMoreListener;
import com.eric.pickupjoke.listview.MyListView.OnRefreshListener; public class AdultJokeActivity extends Activity {
MyListView articleListView;
List<HashMap<String, String>> articleList;
SimpleAdapter adapter;
OnRefreshListener mOnRefreshListener;
OnMoreListener mOnMoreListener;
static int index = 2; @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_adult_joke);
init();
} void init() {
getWindow().setBackgroundDrawable(new ColorDrawable(-1));
articleListView = (MyListView) findViewById(R.id.article_list_view);
articleList = new ArrayList<HashMap<String, String>>();
InputStream is;
try {
is = this.getResources().getAssets().open("source_html.html");
Document doc = Jsoup.parse(is, "GBK", "http://www.haha365.com");
Log.i("AsyncTask in AdultJokeActivity", "5");
Elements twoArticleElements = doc
.select("div.content>div.left>div.r_c>div.cat_llb");
Log.i("AsyncTask in AdultJokeActivity", "6");
if (twoArticleElements != null && twoArticleElements.size() > 0) {
for (Element twoArticleElement : twoArticleElements) {
Log.i("AsyncTask in AdultJokeActivity", "7");
List<TextNode> textList = twoArticleElement.textNodes();
Map<String, String> map1 = new HashMap<String, String>();
Map<String, String> map2 = new HashMap<String, String>();
Log.i("AsyncTask in AdultJokeActivity", "8");
map1.put("time", textList.get(0).text());
map1.put("title", twoArticleElement.child(1).text());
map1.put("content", twoArticleElement.child(3).text());
map2.put("time", textList.get(4).text());
map2.put("title", twoArticleElement.child(6).text());
map2.put("content", twoArticleElement.child(8).text());
Log.i("AsyncTask in AdultJokeActivity", "9");
articleList.add((HashMap<String, String>) map1);
articleList.add((HashMap<String, String>) map2);
Log.i("AsyncTask in AdultJokeActivity", "10");
}
}
} catch (IOException e) {
e.printStackTrace();
}
Log.i("init() in AdultJokeActivity", "1");
adapter = new SimpleAdapter(this, articleList,
R.layout.article_list_item, new String[] { "title", "content",
"time" }, new int[] { R.id.title, R.id.content,
R.id.time });
articleListView.setAdapter(adapter);
Log.i("init() in AdultJokeActivity", "2"); mOnRefreshListener = new OnRefreshListener() {
@Override
public void onRefresh() {
Log.i("onRefresh in AdultJokeActivity", "1");
if (new IsConnection(AdultJokeActivity.this).isConnected()) {
new LoadArticleTask()
.execute("http://www.haha365.com/Adult_joke/"); }
}
};
mOnMoreListener = new OnMoreListener() {
@Override
public void onMore() {
Log.i("onMore in AdultJokeActivity", "1");
if (new IsConnection(AdultJokeActivity.this).isConnected()
&& index <= 18) {
new LoadArticleTask()
.execute("http://www.haha365.com/Adult_joke/index_"
+ String.valueOf(index) + ".htm");
index++;
} }
};
articleListView.setOnRefreshListener(mOnRefreshListener);
articleListView.setOnMoreListener(mOnMoreListener);
} private class LoadArticleTask extends AsyncTask<String, Void, String> {
@Override
protected String doInBackground(String... urls) {
try {
Log.i("AsyncTask in AdultJokeActivity", "1");
HttpClient httpClient = new DefaultHttpClient();
HttpGet httpGet = new HttpGet(urls[0]);
HttpResponse httpResponse = httpClient.execute(httpGet);
Log.i("AsyncTask in AdultJokeActivity", "2");
if (httpResponse.getStatusLine().getStatusCode() == HttpStatus.SC_OK) {
Log.i("AsyncTask in AdultJokeActivity", "3");
String html = EntityUtils.toString(
httpResponse.getEntity(), "GBK");
// System.out.println(html);
Log.i("AsyncTask in AdultJokeActivity", "4");
return html;
} else {
Toast.makeText(AdultJokeActivity.this, "获取HTML文档失败",
Toast.LENGTH_SHORT).show();
return null;
}
} catch (ClientProtocolException e) {
e.printStackTrace();
return null;
} catch (IOException e) {
e.printStackTrace();
return null;
}
} @Override
protected void onPostExecute(String html) {
Document doc = Jsoup.parse(html);
Log.i("AsyncTask in AdultJokeActivity", "5");
Elements twoArticleElements = doc
.select("div.content>div.left>div.r_c>div.cat_llb");
Log.i("AsyncTask in AdultJokeActivity", "6");
if (twoArticleElements != null && twoArticleElements.size() > 0) {
for (Element twoArticleElement : twoArticleElements) {
Log.i("AsyncTask in AdultJokeActivity", "7");
List<TextNode> textList = twoArticleElement.textNodes();
Map<String, String> map1 = new HashMap<String, String>();
Map<String, String> map2 = new HashMap<String, String>();
Log.i("AsyncTask in AdultJokeActivity", "8");
map1.put("time", textList.get(0).text());
map1.put("title", twoArticleElement.child(1).text());
map1.put("content", twoArticleElement.child(3).text());
map2.put("time", textList.get(4).text());
map2.put("title", twoArticleElement.child(6).text());
map2.put("content", twoArticleElement.child(8).text());
Log.i("AsyncTask in AdultJokeActivity", "9");
articleList.add((HashMap<String, String>) map1);
articleList.add((HashMap<String, String>) map2);
Log.i("AsyncTask in AdultJokeActivity", "10");
}
} else {
Log.i("AsyncTask in AdultJokeActivity", "8");
}
adapter.notifyDataSetChanged();
articleListView.onRefreshComplete("更新时间:" + getCalendarString());
articleListView.onMoreComplete();
Log.i("AsyncTask in AdultJokeActivity", "11");
}
} @Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.adult_joke, menu);
return true;
} public String getCalendarString() {
Calendar c = Calendar.getInstance(Locale.CHINA);
int mHour = c.get(Calendar.HOUR_OF_DAY);
int mMinter = c.get(Calendar.MINUTE);
return String.valueOf(mHour) + ":" + String.valueOf(mMinter);
} }
Jsoup解析html终于成功了!!!的更多相关文章
- 一步步教你为网站开发Android客户端---HttpWatch抓包,HttpClient模拟POST请求,Jsoup解析HTML代码,动态更新ListView
本文面向Android初级开发者,有一定的Java和Android知识即可. 文章覆盖知识点:HttpWatch抓包,HttpClient模拟POST请求,Jsoup解析HTML代码,动态更新List ...
- Android利用Jsoup解析html 开发网站客户端小记。
这些天业余时间比较多,闲来无事,想起了以前看过开发任意网站客户端的一篇文章,就是利用jsoup解析网站网页,通过标签获取想要的内容.好了废话不多说,用到的工具为 jsoup-1.7.2.jar包,具体 ...
- [java] jsoup 解析网页获取省市区域信息
到国家统计局抓取数据, 到该class下解析数据 /** * jsoup解析网页 * @author xwolf * @date 2016-12-13 18:11 * @since V1.0.0 */ ...
- jsoup解析HTML及简单实例
jsoup 中文参考文献 http://www.open-open.com/jsoup/ 本文将利用jsoup,简单实现网络抓取的功能,并给出一个小实例,该实例效果为:获取作者本人在博客园写的所 ...
- jsoup解析HTML
Connection conn = Jsoup.connect(String url); conn.data("txtBill", key);// 设置关键字查询字段 Docume ...
- Android开发探秘之三:利用jsoup解析HTML页面
这节主要是讲解jsoup解析HTML页面.由于在android开发过程中,不可避免的涉及到web页面的抓取,解析,展示等等,所以,在这里我主要展示下利用jsoup jar包来抓取cnbeta.com网 ...
- 终于成功仿了一次Kalman滤波器
终于成功仿了一次Kalman滤波器 首先是测试了从网上down的一段代码 % KALMANF - updates a system state vector estimate based upon a ...
- Jsoup 解析 HTML
Jsoup 文档 方法 要取得一个属性的值,可以使用Node.attr(String key) 方法 对于一个元素中的文本,可以使用Element.text()方法 对于要取得元素或属性中的HTML内 ...
- Jsoup解析HTML、加载文档等实例
一.引入jsoup的jar包:http://jsoup.org/download 补充:http://jsoup.org/apidocs/ Jsoup API 可以了解更详细的内容 二.Js ...
随机推荐
- 【记录】vmware fusion 7 windows 10 unidentified network
今天在 vmware fusion 7 中,使用 windows 10 时,突然报出一个错误(忘记截图了),当时就要求强制重启系统,也没怎么在意,但是重启之后,发现 windows 10 居然不能联网 ...
- [Keras] mnist with cnn
典型的卷积神经网络. Keras傻瓜式读取数据:自动下载,自动解压,自动加载. # X_train: array([[[[ 0., 0., 0., ..., 0., 0., 0.], [ 0., 0. ...
- java 线程 Thread 使用介绍,包含wait(),notifyAll() 等函数使用介绍
(原创,转载请说明出处!谢谢--http://www.cnblogs.com/linguanh/) 此文目的为了帮助大家较全面.通俗地了解线程 Thread 相关基础知识! 目录: --线程的创建: ...
- 【JUC】JDK1.8源码分析之ThreadPoolExecutor(一)
一.前言 JUC这部分还有线程池这一块没有分析,需要抓紧时间分析,下面开始ThreadPoolExecutor,其是线程池的基础,分析完了这个类会简化之后的分析,线程池可以解决两个不同问题:由于减少了 ...
- OpenCV2:等间隔采样和局部均值的图像缩小
图像的缩小从物理意义上来说,就是将图像的每个像素的大小缩小相应的倍数.但是,改变像素的物理尺寸显然不是那么容易的,从数字图像处理的角度来看,图像的缩小实际就是通过减少像素个数来实现的.显而易见的,减少 ...
- mybatis入门基础(七)----延迟加载
一.什么是延迟加载 resultMap可以实现高级映射(使用association.collection实现一对一及一对多映射),association.collection具备延迟加载功能. 需求: ...
- ISS部署网站--HTTP 错误 404.17 - Not Found 请求的内容似乎是脚本,因而将无法由静态文件处理程序来处理。
1.控制面板>程序和功能>打开或关闭Windows功能 > Internet信息服务 > 万维网服务 > 应用程序开发功能 > ASP.NET(看这个是否选上): ...
- iOS学习笔记——键盘处理
在网上找到的资料比较零散,这部分学起来感觉也有点空虚,内容就只包括隐藏键盘和键盘高度两部分 隐藏键盘其实就在我学习iOS开发的第一个程序里面已经实践过了,不过当时还懵懵懂懂,现在就了解了是什么一回事, ...
- WPF筛选、排序和分组
可以通过CollectionViewSource或者CollectionView对视图进行排序.筛选和分组. 一.通过CollectionViewSource listingDataView是Coll ...
- 【nodejs笔记——小知识点汇总】
1. ejs标签: <% %> , <%- %> , <%= %>的区别 ejs的标签分为三种: (1)<% code %> javasc ...