jsoup Cookbook(中文版)
注意:div的class名称有空格的话,是解析不到的,比如:
<div class="container clearfix pt0" id="mainBox"></div>
还有一种情况,就是页面需要点击按钮添加数据,简单的说,通过点击调用JS来加载数据,那么这部分数据也不好抓取。
mMeiList = new ArrayList<>();
new Thread(new Runnable() {
@Override
public void run() {
try {//http://m.mmjpg.com/tag/mengmei
// Document doc = Jsoup.connect("http://www.mmjpg.com/tag/mengmei").get();
// Elements els = doc.select("div.pic");
// //Log.e("萌妹", els.toString());
// Elements elements = els.select("li");
// //Log.e("萌妹-li", elements.toString());
// for (int i = 0; i < elements.size(); i++) {
// Element el = elements.get(i);
// //扩展名为.jpg的图片
// Elements jpgs = el.select("img[src$=.jpg]");
// String src = jpgs.attr("src");
// String alt = jpgs.attr("alt");
//
// }
Document doc = Jsoup.connect("http://www.mmonly.cc/ktmh/").get();
Elements els = doc.select("div.imgwkc");
//Log.e("萌妹", els.toString());
Elements elements = els.select("a");
//Log.e("萌妹-li", elements.toString());
for (int i = 0; i < elements.size(); i++) {
mMengMei = new MengMei();
Element el = elements.get(i);
//扩展名为.jpg的图片
Elements jpgs = el.select("img[src$=.jpg]");
String src = jpgs.attr("src");
String alt = jpgs.attr("alt");
Log.e("萌妹-jpgs", jpgs.toString());
Log.e("萌妹-src", src.toString());
Log.e("萌妹-alt", alt.toString());
mMengMei.setImg(src);
mMengMei.setAlt(alt);
mMeiList.add(mMengMei);
}
} catch (IOException pE) {
pE.printStackTrace();
}
//通过mHandler对象的obtainMessage()
//方法得到一个消息msg对象实例
Message msg = mHandler.obtainMessage();
//封装消息ID
msg.what = MESSAGE_ID;
//通过mHandler对象将消息发送出去
mHandler.sendMessage(msg);
}
}).start();
}
//创建一个Handler局部类对象
Handler mHandler = new Handler(){
@Override
public void handleMessage(Message msg) {
//得到封装的消息ID进行匹配
if (MESSAGE_ID == msg.what){
//更换ImageView的背景
initData();
}
}
};
private void initData() {
// 加载网络图片
// 创建布局管理
LinearLayoutManager layoutManager = new LinearLayoutManager(getActivity());
layoutManager.setOrientation(LinearLayoutManager.VERTICAL);
mRecyclerView.setLayoutManager(layoutManager);
// 创建适配器
mMengMeiAdapter = new MengMeiAdapter(R.layout.item_img_list, mMeiList);
// 给RecyclerView设置适配器
mRecyclerView.setAdapter(mMengMeiAdapter);
mMengMeiAdapter.setOnItemClickListener(new BaseQuickAdapter.OnItemClickListener() {
@Override
public void onItemClick(BaseQuickAdapter adapter, View view, int position) {
Intent intent = new Intent(getActivity(), ImgDetailsActivity.class);
Bundle bundle = new Bundle();
bundle.putInt("position", position);
intent.putExtra("bundle", bundle);
startActivity(intent);
}
});
}