package com.pan.simplepicture.model; import com.pan.simplepicture.bean.Juzimi; import com.pan.simplepicture.inter.Callback; import com.pan.simplepicture.model.impl.IPicModel; import org.jsoup.Jsoup; import org.jsoup.nodes.Document; import org.jsoup.nodes.Element; import org.jsoup.select.Elements; import java.io.IOException; import java.util.ArrayList; import java.util.List; import java.util.Map; import rx.Observable; import rx.Subscriber; import rx.android.schedulers.AndroidSchedulers; import rx.functions.Action1; import rx.schedulers.Schedulers; /** * Created by sysadminl on 2015/12/9. */ public class PicModel implements IPicModel { @Override public void parseJuzimiHtml(final Map<String, String> params, final Callback<List<Juzimi>> mCallback) { Observable.create(new Observable.OnSubscribe<List<Juzimi>>() { @Override public void call(Subscriber<? super List<Juzimi>> subscriber) { try { Document result = Jsoup.connect(params.get("url") + "?page=" + params.get("page")).get(); Elements elements = result.select("div[class^=views-row views-row]"); List<Juzimi> list = new ArrayList<Juzimi>(); for (Element e : elements) { Juzimi mJuzimi = new Juzimi(); Elements chromeimg = e.getElementsByClass("chromeimg"); if (chromeimg == null || chromeimg.size() == 0) continue; mJuzimi.url = chromeimg.get(0).attr("src"); Elements xlistjus = e.getElementsByClass("xlistju"); if (xlistjus != null && xlistjus.size() > 0) { mJuzimi.content = xlistjus.get(0).text(); } Elements xqusernpops = e.getElementsByClass("xqusernpop"); if (xqusernpops != null && xqusernpops.size() > 0) { mJuzimi.sender = xqusernpops.get(0).text(); } list.add(mJuzimi); } subscriber.onNext(list); } catch (IOException e) { e.printStackTrace(); subscriber.onNext(null); } } }).subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribe(new Action1<List<Juzimi>>() { @Override public void call(List<Juzimi> list) { if (null == list) { mCallback.onFaild(); } else { mCallback.onSccuss(list); } } }); } }