国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

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)容進(jìn)行解析 。同時(shí)它還提供了一套非常完善的API接口規(guī)范,讓開發(fā)人員只需在程序中調(diào)用相應(yīng)的接口即可。尤其是Jsoup功能強(qiáng)大的選擇器,能夠讓用戶方便的通過訪問節(jié)點(diǎn)名稱或者HTML元素中的id即可輕松獲取數(shù)據(jù)。正因?yàn)樗哂械倪@些優(yōu)勢讓它在輕量級的應(yīng)用中,省去了操作數(shù)據(jù)庫的麻煩。該文主要通過講解Jsoup在android應(yīng)用開發(fā)中所占的優(yōu)勢,以及如何解析百度新聞網(wǎng)為契機(jī),進(jìn)而介紹Jsoup的使用方法。

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

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

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

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

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

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

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

2 Jsoup的優(yōu)勢

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

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

2)無需自己維護(hù)

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

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

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

4)強(qiáng)大的選擇器

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

例如:

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

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

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

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

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

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

3 Jsoup的使用方法

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

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

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

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

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

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

以上幾種加載HTML文檔的方法中,比較常用的是第二種方式。在制作百度新聞手機(jī)客戶端時(shí),不需要進(jìn)行登錄,也就不用在代碼中設(shè)置cookie等參數(shù),所以加載百度新聞HTML頁面的代碼可以這樣設(shè)置:Document doc = Jsoup.connect("http://news.baidu.com/").timeout(3000) .get();,這里僅僅設(shè)置了連接超時(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控件在手機(jī)中顯示數(shù)據(jù)即可看到效果。

4 總結(jié)

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

參考文獻(xiàn):

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

[2] 曾偉輝, 李淼. 深層網(wǎng)絡(luò)爬蟲研究綜述[J]. 計(jì)算機(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è)計(jì)
基于CSS的網(wǎng)頁導(dǎo)航欄的設(shè)計(jì)
電子制作(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個(gè)必知的網(wǎng)頁設(shè)計(jì)術(shù)語
河池市| 赤城县| 泗阳县| 石屏县| 广州市| 阳新县| 彭阳县| 大余县| 垣曲县| 平江县| 天峻县| 原平市| 绩溪县| 兴业县| 邛崃市| 普格县| 轮台县| 宕昌县| 美姑县| 普宁市| 桃江县| 偏关县| 广宗县| 白水县| 天门市| 徐州市| 广河县| 北流市| 北安市| 神池县| 盐源县| 肇东市| 内江市| 渭源县| 钟祥市| 拉萨市| 奈曼旗| 邳州市| 大连市| 客服| 华坪县|