• <tr id="yyy80"></tr>
  • <sup id="yyy80"></sup>
  • <tfoot id="yyy80"><noscript id="yyy80"></noscript></tfoot>
  • 99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

    Android開發(fā)一大神器

    2015-05-15 21:48:19盛雪豐
    電腦知識與技術(shù) 2015年8期
    關(guān)鍵詞:選擇器開發(fā)者網(wǎng)頁

    盛雪豐

    摘要:Jsoup 是Android應(yīng)用開發(fā)中著名的第三方類庫,其主要應(yīng)用于操作html文件,獲取用戶需要的數(shù)據(jù)。該技術(shù)主要通過獲取URL 地址、HTML 格式的文本內(nèi)容進行解析 。同時它還提供了一套非常完善的API接口規(guī)范,讓開發(fā)人員只需在程序中調(diào)用相應(yīng)的接口即可。尤其是Jsoup功能強大的選擇器,能夠讓用戶方便的通過訪問節(jié)點名稱或者HTML元素中的id即可輕松獲取數(shù)據(jù)。正因為它所具有的這些優(yōu)勢讓它在輕量級的應(yīng)用中,省去了操作數(shù)據(jù)庫的麻煩。該文主要通過講解Jsoup在android應(yīng)用開發(fā)中所占的優(yōu)勢,以及如何解析百度新聞網(wǎng)為契機,進而介紹Jsoup的使用方法。

    關(guān)鍵詞:Android輕應(yīng)用;Jsoup

    中圖分類號:TN927 文獻標(biāo)識碼:A 文章編號:1009-3044(2015)08-0063-03

    隨著社會的發(fā)展與進步,信息量呈現(xiàn)出爆炸式的增長速度。與此同時,伴隨著智能手機的日益普及,手機在人們的日常生活中逐漸扮演著越來越重要的角色。另外,近年來隨著我國4G網(wǎng)絡(luò)的全面覆蓋,也使得手機在移動互聯(lián)網(wǎng)上的應(yīng)用也越來越豐富,網(wǎng)上看視頻、刷微博、聊微信等幾乎成了手機族的最愛。越來越多的開發(fā)者也開始從事互聯(lián)網(wǎng)信息交互技術(shù)的研究,范圍涵蓋了移動通信、信息交互、電子商務(wù)等方面。目前,國內(nèi)最常見的移動開發(fā)平臺主要有Android,IPhone以及Windows Phone,大部分的在校大學(xué)生所使用的智能手機主要是以Android系統(tǒng)為代表。而本文所介紹的Jsoup技術(shù)正是基于Android平臺下,在文中將通過介紹Jsoup技術(shù)來實現(xiàn)百度新聞網(wǎng)數(shù)據(jù)的抓取。

    1 Jsoup簡介

    Jsoup是Android應(yīng)用開發(fā)中著名的第三方類庫,其主要應(yīng)用于解析html文件,獲取用戶需要的數(shù)據(jù)。它提供了一套非常完善的API接口規(guī)范,開發(fā)者可以通過DOM遍歷或者類似于jQuery的操作方法來取出和操作數(shù)據(jù)。同時它還包含了一個支持最新 HTML5技術(shù)的解析器分支,能夠很好的降低解析的時間和內(nèi)存的占用。Jsoup主要提供了以下幾個功能:

    1)解析,通過給定的URL地址、html文件或者html格式的字符串來獲取數(shù)據(jù)。

    2)查找,通過DOM遍歷或者CSS選擇器來尋找和抽取數(shù)據(jù)。

    3)操作,能夠處理HTML元素、屬性和文本,主要包括查找和修改。

    4)檢查,通過白名單機制來保護HTML內(nèi)容的安全。

    2 Jsoup的優(yōu)勢

    1)無需數(shù)據(jù)庫支持

    有時候在制作一些手機APP時,出于安全性因素考慮,對方不愿直接提供原始數(shù)據(jù)庫,只提供一個網(wǎng)站給我們充當(dāng)數(shù)據(jù)源,也就意味著APP應(yīng)用中所有的數(shù)據(jù)都需要從網(wǎng)站中獲取,這時候就需要對網(wǎng)頁中的html元素進行解析,獲取想要的數(shù)據(jù)。目前市面上有許多主流開源爬蟲框架,但如果只是爬取網(wǎng)頁中少量數(shù)據(jù)的情況下,可以自已編寫爬蟲類,然后利用Jsoup對html元素進行解析即可。

    2)無需自己維護

    對于app軟件的制作,最難的可能還是后期數(shù)據(jù)的維護工作,尤其是涉及到針對數(shù)據(jù)的增、刪、改等操作,需要考慮后臺數(shù)據(jù)庫與手機界面顯示數(shù)據(jù)的同步問題,以及多用戶同時操作同一條數(shù)據(jù)的互鎖問題。而Jsoup只是單純的解析某個網(wǎng)頁上的數(shù)據(jù),而且網(wǎng)頁上的html格式比較固定,而且普通用戶往往也無法直接對網(wǎng)頁數(shù)據(jù)進行修改,即使網(wǎng)頁數(shù)據(jù)有所更新,由于html標(biāo)識未發(fā)生改變,用戶重新進入app應(yīng)用后即可看到更新后的數(shù)據(jù),故對于開發(fā)者無需考慮數(shù)據(jù)維護的問題。

    3)訪問數(shù)據(jù)效率高

    大多數(shù)的app都會和數(shù)據(jù)庫進行交互,無論是SQLite數(shù)據(jù)庫還是遠程的數(shù)據(jù)庫,用戶在手機上對數(shù)據(jù)的修改,都會涉及到兩個操作,先將修改后的數(shù)據(jù)寫入數(shù)據(jù)庫,再將新數(shù)據(jù)從數(shù)據(jù)庫中讀出并顯示在手機終端,如果連接的是SQLite數(shù)據(jù)庫,則兩次操作所耗費的時間很短,幾乎可以忽略,但如果連接的是遠程的數(shù)據(jù)庫,則需要視網(wǎng)絡(luò)的連接狀況,有時可能需要耗費較長的時間,而且開發(fā)者又往往在程序中設(shè)置了延時,一旦在延時內(nèi)仍未獲取到最新的數(shù)據(jù)時,可能就會造成app的異常終止。而使用Jsoup只涉及單方面的讀取操作,通過編寫的爬蟲類抓取html代碼,然后再使用Jsoup進行解析網(wǎng)頁代碼取出相應(yīng)數(shù)據(jù)。即使網(wǎng)頁數(shù)據(jù)更改了,如果手機app中設(shè)置了向下滑動刷新數(shù)據(jù)的功能,只需要向下滑動手指即可,或者退出后重新進入該app即可。

    4)強大的選擇器

    在解析并提取 HTML 元素時,以往比較常用的是傳統(tǒng)的DOM方式的元素解析。

    例如:

    其中用到了getElementById()和getElementsByTag()這2個方法,它們分別可以根據(jù)HTML元素的id、節(jié)點名稱來獲取對應(yīng)的元素或元素列表。

    一般情況下,一個HTML元素的組成部分包括:節(jié)點名、屬性和文本。Jsoup的選擇器就能夠根據(jù)這些標(biāo)識方便的進行數(shù)據(jù)的檢索。在元素檢索方面,Jsoup的選取器簡直無所不能。無論是在獲取數(shù)據(jù)、修改數(shù)據(jù)方面極大的減輕了開發(fā)者的負擔(dān)。通過使用語句Document doc = Jsoup.parse(“網(wǎng)頁文件”,"UTF-8","BaseURL/"); doc.select(“格式”)分別得到不同類型的數(shù)據(jù)。具體格式如下表:

    以上是最基本的選擇器語法,這些語法也可以組合起來使用,具體如表2所示:

    除了一些基本的語法以及這些語法進行組合外,Jsoup還支持使用表達式進行元素過濾選擇,具體如表3所示:

    在Jsoup選擇器的上述語法中,比較常用的還是根據(jù)html元素的id、class屬性以及屬性值等格式。在文檔成功解析后,順利的獲取了想要的數(shù)據(jù),這時可能會需要對某些元素進行修改,例如為鏈接地址增加屬性、為圖片增加可點擊鏈接、修改文本內(nèi)容等。Jsoup中也提供了相應(yīng)的方法。例如:

    除了無法修改標(biāo)簽名外,包括元素的屬性和文本都可以修改。通過以上的介紹可以發(fā)現(xiàn),Jsoup 使用跟 jQuery 一模一樣的選擇器對元素進行檢索,操作非常簡便,只需要一行代碼即可完成。

    3 Jsoup的使用方法

    第一步:加載HTML頁面,生成 Document 對象實例

    Jsoup提供了3種方式來加載html頁面,它們分別為:

    1)根據(jù)給定的html格式的字符串加載文檔

    2)根據(jù)給定的URL 地址加載文檔

    3)根據(jù)本地html文件加載 文檔

    因為 一般的HTML 文檔中經(jīng)常會出現(xiàn)鏈接、圖片以及所引用的外部腳本、css 文件等內(nèi)容, 在第三種加載文檔方式中加入BaseURL 參數(shù)的目的就是當(dāng) HTML 文檔使用相對路徑方式引用外部文件時,Jsoup 會自動為這些 URL 加上一個BaseURL地址的前綴 。

    以上幾種加載HTML文檔的方法中,比較常用的是第二種方式。在制作百度新聞手機客戶端時,不需要進行登錄,也就不用在代碼中設(shè)置cookie等參數(shù),所以加載百度新聞HTML頁面的代碼可以這樣設(shè)置:Document doc = Jsoup.connect("http://news.baidu.com/").timeout(3000) .get();,這里僅僅設(shè)置了連接超時為3秒。

    第二步:Jsoup解析HTML

    在IE瀏覽器中輸入百度新聞網(wǎng)的地址http://news.baidu.com,通過查看該網(wǎng)頁的源代碼,發(fā)現(xiàn)部分html代碼如下:

    從代碼分析中可以看出,新聞列表都被存放在類名為hotnews下,所以獲取新聞列表可以通過利用Jsoup選擇器中的查找類名的方式完成,因此代碼為:

    通過Jsoup解析html代碼,得到用戶想要的數(shù)據(jù),另外可以采用Android中的WebView控件在手機中顯示數(shù)據(jù)即可看到效果。

    4 總結(jié)

    本文詳細介紹了Jsoup所具備的優(yōu)勢,以及它的使用方法,并簡單介紹了如何使用Jsoup抓取百度新聞網(wǎng)的數(shù)據(jù)。由于 Jsoup 具有良好的可擴展性 API 設(shè)計,開發(fā)者通過Jsoup功能強大的選擇器可以開發(fā)出非常強大的 HTML 解析功能,再加上 Jsoup 項目本身的開發(fā)也非常活躍,相信對于一些輕量級的Android應(yīng)用開發(fā),它絕對會是您的一位好幫手!

    參考文獻:

    [1] jsoup[EB/OL]. http://jsoup.org/.

    [2] 曾偉輝, 李淼. 深層網(wǎng)絡(luò)爬蟲研究綜述[J]. 計算機系統(tǒng)應(yīng)用, 2008, 17(5).

    [3] Jonathan Hedley. Jsoup: Java HTML Parser[EB/OL]. http://jsoup.org/.

    [4] 余志龍, 鄭名杰. Google.Android.SDK 開發(fā)范例大全[M]. 2版. 北京: 人民郵電出版社, 2010.

    [5] 墨菲, 李雪飛, 吳明暉. Android開發(fā)入門教程[M]. 北京: 人民郵電出版社, 2010.

    猜你喜歡
    選擇器開發(fā)者網(wǎng)頁
    靶通道選擇器研究與優(yōu)化設(shè)計
    基于CSS的網(wǎng)頁導(dǎo)航欄的設(shè)計
    電子制作(2018年10期)2018-08-04 03:24:38
    四選一數(shù)據(jù)選擇器74LS153級聯(lián)方法分析與研究
    電腦與電信(2017年6期)2017-08-08 02:04:22
    基于URL和網(wǎng)頁類型的網(wǎng)頁信息采集研究
    電子制作(2017年2期)2017-05-17 03:54:56
    16%游戲開發(fā)者看好VR
    CHIP新電腦(2016年3期)2016-03-10 13:06:42
    網(wǎng)頁制作在英語教學(xué)中的應(yīng)用
    電子測試(2015年18期)2016-01-14 01:22:58
    雙四選一數(shù)據(jù)選擇器74HC153的級聯(lián)分析及研究
    iOS開發(fā)者調(diào)查
    電腦迷(2015年8期)2015-05-30 12:27:10
    iOS開發(fā)者調(diào)查
    電腦迷(2015年4期)2015-05-30 05:24:09
    10個必知的網(wǎng)頁設(shè)計術(shù)語
    东台市| 攀枝花市| 曲麻莱县| 乌拉特前旗| 十堰市| 鄯善县| 滦南县| 平乐县| 德惠市| 二连浩特市| 阳曲县| 鄱阳县| 龙山县| 金堂县| 镇江市| 开江县| 双鸭山市| 通渭县| 贡山| 逊克县| 井研县| 甘孜县| 莱阳市| 黄山市| 肇州县| 泊头市| 买车| 信宜市| 贵港市| 大名县| 青龙| 安平县| 封丘县| 潜江市| 教育| 柳江县| 平湖市| 揭东县| 瓦房店市| 昌宁县| 玛纳斯县|