一鍵HTML 轉(zhuǎn) Bean -- Ajsoup

AJsoup


API
API

author
author

AJsoup 模塊是快速將html 轉(zhuǎn)換成bean 類似gson轉(zhuǎn)換

依賴 jsoup

使用前提你了解jsoup并且了解jsoup的Select

Gradle

compile 'com.github.zdongcoding:ajsoup:0.1.0'

Maven

<dependency>
  <groupId>com.github.zdongcoding</groupId>
  <artifactId>ajsoup</artifactId>
  <version>0.1.0</version>
  <type>pom</type>
</dependency>

使用方法如下:

    bean.java

    @Select(select = "body")
    public class HomeBean {
        @Select(select = "div > div > div.listbox")
        public HotTopTabBean hotTopTabBean; //熱門數(shù)據(jù)
        @Select(select = "div#nav > ul > li[id]", attr = "id")
        public Map<String, NavBean> navBeans;
        @Select(select = "div#nav-under > ul >li:has(a)")  //排除無(wú) <a 標(biāo)簽
        public List<NavBean> navUnderBeans;
        @Select(select = "div#body > div.left.noborder.clearfix.block1 > ul")
        public List<LatestVideoBean> latests;
        @Select(select = "div#header-in > div > ul#hot-words > li")
        public List<WebBean> searchbeans;
    }
   String html=....;

   HomeBean bean=AJsoupReader.deserialize(Jsoup.parse(html), HomeBean.class);

AJsoup---->Converter-Ajsoup

使用過(guò)Retrofit 一看這個(gè)名字就知道做什么的

Gradle

compile 'com.github.zdongcoding:converter-ajsoup:0.1.0'

Maven

<dependency>
  <groupId>com.github.zdongcoding</groupId>
  <artifactId>converter-ajsoup</artifactId>
  <version>0.1.0</version>
  <type>pom</type>
</dependency>

使用方法:

    Api.java
     public interface Api {
        @GET("{url}")
        Observable<String> getPage(@Path(value = "url",encoded = true) String url);
     }
    api = new Retrofit.Builder().baseUrl(baseUri)
                .addConverterFactory(JsoupConverterFactory.create())
                .addConverterFactory(ScalarsConverterFactory.create())
                .addCallAdapterFactory(RxJavaCallAdapterFactory.create())
                .build().create(Api.class);
    
    api.getPage("").subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribe(new Subscriber<HomeBean>() {
            @Override
            public void onCompleted() {
            }
            @Override
            public void onError(Throwable e) {
            }
            @Override
            public void onNext(HomeBean homeBean) {
                view.setText(homeBean.toString());
            }
        });

    

選擇器概要(Selector overview)

  • Tagname:通過(guò)標(biāo)簽查找元素(例如:a)
  • ns|tag:通過(guò)標(biāo)簽在命名空間查找元素萤悴,例如:fb|name查找<fb:name>元素
  • id:通過(guò)ID查找元素,例如#logo

  • .class:通過(guò)類型名稱查找元素,例如.masthead
  • [attribute]:帶有屬性的元素免都,例如[href]
  • [attr]:帶有名稱前綴的元素酗电,例如[data-]查找HTML5帶有數(shù)據(jù)集(dataset)屬性的元素
  • [attr=value]:帶有屬性值的元素月洛,例如[width=500]
  • [attr^=value]婉徘,[attr$=value]藏研,[attr=value]:包含屬性且其值以value開(kāi)頭敬矩、結(jié)尾或包含value的元素,例 如[href*=/path/]
  • [attr=regex]:屬性值滿足正則表達(dá)式的元素蠢挡,例如img[src=(?i).(png|jpe?g)]
  • :所有元素弧岳,例如
  • 選擇器組合方法
  • el#id::帶有ID的元素ID,例如div#logo
  • el.class:帶類型的元素袒哥,例如. div.masthead
  • el[attr]:包含屬性的元素缩筛,例如a[href]
  • 任意組合:例如a[href].highlight
  • ancestor child:繼承自某祖(父)元素的子元素,例如.body p查找“body”塊下的p元素
  • parent > child:直接為父元素后代的子元素堡称,例如: div.content > pf查找p元素瞎抛,body > * 查找body元素的* 直系子元素
  • siblingA + siblingB:查找由同級(jí)元素A前導(dǎo)的同級(jí)元素,例如div.head + div
  • siblingA ~ siblingX:查找同級(jí)元素A前導(dǎo)的同級(jí)元素X例如h1 ~ p
  • el, el, el:多個(gè)選擇器組合却紧,查找匹配任一選擇器的唯一元素桐臊,例如div.masthead, div.logo
  • 偽選擇器(Pseudo selectors)
  • :lt(n):查找索引值(即DOM樹(shù)中相對(duì)于其父元素的位置)小于n的同級(jí)元素胎撤,例如td:lt(3)
  • :gt(n):查找查找索引值大于n的同級(jí)元素,例如div p:gt(2)
  • :eq(n) :查找索引值等于n的同級(jí)元素断凶,例如form input:eq(1)
  • :has(seletor):查找匹配選擇器包含元素的元素伤提,例如div:has(p)
  • :not(selector):查找不匹配選擇器的元素,例如div:not(.logo)
  • :contains(text):查找包含給定文本的元素认烁,大小寫銘感肿男,例如p:contains(jsoup)
  • :containsOwn(text):查找直接包含給定文本的元素
  • :matches(regex):查找其文本匹配指定的正則表達(dá)式的元素,例如div:matches((?i)login)
  • :matchesOwn(regex):查找其自身文本匹配指定的正則表達(dá)式的元素
  • 注意:上述偽選擇器是0-基數(shù)的却嗡,亦即第一個(gè)元素索引值為0舶沛,第二個(gè)元素index為1等

<font color=#ff0000 size=12 face="黑體">主要用到以上字段</font>

不需要服務(wù)器 就可以做一個(gè)快速做一個(gè)客戶端

完畢,就是這么簡(jiǎn)單

最后 :GitHub

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末窗价,一起剝皮案震驚了整個(gè)濱河市如庭,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌撼港,老刑警劉巖坪它,帶你破解...
    沈念sama閱讀 212,454評(píng)論 6 493
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異帝牡,居然都是意外死亡往毡,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,553評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門否灾,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)卖擅,“玉大人,你說(shuō)我怎么就攤上這事墨技。” “怎么了挎狸?”我有些...
    開(kāi)封第一講書人閱讀 157,921評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵扣汪,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我锨匆,道長(zhǎng)崭别,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書人閱讀 56,648評(píng)論 1 284
  • 正文 為了忘掉前任恐锣,我火速辦了婚禮茅主,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘土榴。我一直安慰自己诀姚,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,770評(píng)論 6 386
  • 文/花漫 我一把揭開(kāi)白布玷禽。 她就那樣靜靜地躺著赫段,像睡著了一般呀打。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上糯笙,一...
    開(kāi)封第一講書人閱讀 49,950評(píng)論 1 291
  • 那天贬丛,我揣著相機(jī)與錄音,去河邊找鬼给涕。 笑死豺憔,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的够庙。 我是一名探鬼主播焕阿,決...
    沈念sama閱讀 39,090評(píng)論 3 410
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼首启!你這毒婦竟也來(lái)了暮屡?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書人閱讀 37,817評(píng)論 0 268
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤毅桃,失蹤者是張志新(化名)和其女友劉穎褒纲,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體钥飞,經(jīng)...
    沈念sama閱讀 44,275評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡莺掠,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,592評(píng)論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了读宙。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片彻秆。...
    茶點(diǎn)故事閱讀 38,724評(píng)論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖结闸,靈堂內(nèi)的尸體忽然破棺而出唇兑,到底是詐尸還是另有隱情,我是刑警寧澤桦锄,帶...
    沈念sama閱讀 34,409評(píng)論 4 333
  • 正文 年R本政府宣布扎附,位于F島的核電站,受9級(jí)特大地震影響结耀,放射性物質(zhì)發(fā)生泄漏留夜。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,052評(píng)論 3 316
  • 文/蒙蒙 一图甜、第九天 我趴在偏房一處隱蔽的房頂上張望碍粥。 院中可真熱鬧,春花似錦黑毅、人聲如沸嚼摩。這莊子的主人今日做“春日...
    開(kāi)封第一講書人閱讀 30,815評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)低斋。三九已至蜂厅,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間膊畴,已是汗流浹背掘猿。 一陣腳步聲響...
    開(kāi)封第一講書人閱讀 32,043評(píng)論 1 266
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留唇跨,地道東北人稠通。 一個(gè)月前我還...
    沈念sama閱讀 46,503評(píng)論 2 361
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像买猖,于是被迫代替她去往敵國(guó)和親改橘。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,627評(píng)論 2 350

推薦閱讀更多精彩內(nèi)容

  • [Jsoup Html頁(yè)面處理簡(jiǎn)單用法] Jsoup工具可以把html文本映射為Dom對(duì)象玉控,用更簡(jiǎn)單的操作htm...
    ae7729ac3ac8閱讀 1,035評(píng)論 0 0
  • 問(wèn)答題47 /72 常見(jiàn)瀏覽器兼容性問(wèn)題與解決方案飞主? 參考答案 (1)瀏覽器兼容問(wèn)題一:不同瀏覽器的標(biāo)簽?zāi)J(rèn)的外補(bǔ)...
    _Yfling閱讀 13,737評(píng)論 1 92
  • 使用選擇器語(yǔ)法來(lái)查找元素問(wèn)題你想使用類似于CSS或jQuery的語(yǔ)法來(lái)查找和操作元素。方法可以使用Element....
    Mr_碼客閱讀 1,111評(píng)論 0 0
  • 這個(gè)select 方法在Document, Element,或Elements對(duì)象中都可以使用高诺。且是上下文相關(guān)的碌识,...
    藝龍閱讀 860評(píng)論 0 1
  • 一)jQuery九類選擇器【參見(jiàn)jQueryAPI.chm手冊(cè)】 目的:通過(guò)九類選擇器,能定位web頁(yè)面(HTML...
    奮斗的老王閱讀 1,035評(píng)論 0 51