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

?

抓取HTTP協(xié)議POST文本數(shù)據(jù)方法設(shè)計(jì)

2016-10-18 05:35:30劉一峰,劉冰,郭良動(dòng)
中國(guó)科技信息 2016年18期
關(guān)鍵詞:萬(wàn)維網(wǎng)報(bào)頭字段

抓取HTTP協(xié)議POST文本數(shù)據(jù)方法設(shè)計(jì)

21世紀(jì)是信息時(shí)代。當(dāng)前的萬(wàn)維網(wǎng)是一個(gè)巨大的存儲(chǔ)、共享文本和圖像信息的分布式媒介,計(jì)算機(jī)是展現(xiàn)文字或圖像的一個(gè)平臺(tái)。從萬(wàn)維網(wǎng)上獲取文本資源的集合可以作為Web挖掘的語(yǔ)料庫(kù)。隨著信息科學(xué)技術(shù)的發(fā)展,基于HTTP協(xié)議POST請(qǐng)求的文檔量占的比重越來(lái)越大,研究如何快速并準(zhǔn)確地從萬(wàn)維網(wǎng)中抓取POST請(qǐng)求類(lèi)型的文本數(shù)據(jù)能夠豐富Web挖掘技術(shù)的語(yǔ)料庫(kù),同時(shí)對(duì)其他需要大量POST文本數(shù)據(jù)的行業(yè)也有一定的意義。

本課題主要研究如何從萬(wàn)維網(wǎng)中抓取帶有持續(xù)Cookie(persistent cookie)的POST文本數(shù)據(jù)?,F(xiàn)以Windows 7的32位系統(tǒng)作為測(cè)試平臺(tái),以eclipse Mars.1為開(kāi)發(fā)平臺(tái),研究一個(gè)快速抓取POST文本數(shù)據(jù)的方法。

HTTP協(xié)議概述

HTTP協(xié)議,即超文本傳輸協(xié)議(Hyper-text transfer protocol),是用于從萬(wàn)維網(wǎng)服務(wù)器傳輸超文本到本地瀏覽器的傳送協(xié)議。HTTP是一個(gè)應(yīng)用層協(xié)議,由請(qǐng)求和響應(yīng)這兩種報(bào)文組成。請(qǐng)求方法有8中類(lèi)型,GET、POST、HEAD、PUT、DELETE、TRACE、CONNECT和OPTIONS等。其中GET和POST是最常見(jiàn)的兩種請(qǐng)求方式。GET是以實(shí)體的方式得到由請(qǐng)求URI所指定資源的信息,如果請(qǐng)求URI只是一個(gè)數(shù)據(jù)產(chǎn)生過(guò)程,那么最終要在響應(yīng)實(shí)體中返回的是處理過(guò)程的結(jié)果所指向的資源,而不是處理過(guò)程的描述。POST則用來(lái)向目的服務(wù)器發(fā)送請(qǐng)求,要求它接受背負(fù)在請(qǐng)求后的實(shí)體,并把它當(dāng)作請(qǐng)求隊(duì)列中請(qǐng)求URI所指定資源的附加新子項(xiàng),POST被設(shè)計(jì)成用統(tǒng)一的方法實(shí)現(xiàn)下列功能:

對(duì)現(xiàn)有資源的解釋;

向電子公告欄、新聞組、郵件列表或類(lèi)似討論組發(fā)信息;

提交數(shù)據(jù)塊;

通過(guò)附加操作來(lái)擴(kuò)展數(shù)據(jù)庫(kù)等。

POST請(qǐng)求報(bào)頭信息分析

請(qǐng)求報(bào)頭允許客戶端向服務(wù)器端傳送請(qǐng)求的附加信息以及客戶端自身的信息。例圖1介紹了一個(gè)典型的POST請(qǐng)求報(bào)頭,它主要包含以下字段:Accept字段表示瀏覽器支持的MIME(Multipurpose Internet Mail Extensions)類(lèi)型;Accept-Encoding字段表示瀏覽器有能力解碼的編碼類(lèi)型;Accept-Language字段表示瀏覽器所支持的語(yǔ)言類(lèi)型;Connection字段表示客戶端與服務(wù)器連接的類(lèi)型; Content-Type字段表示網(wǎng)絡(luò)文件的類(lèi)型和網(wǎng)頁(yè)的編碼格式;Cache-Control字段指定了請(qǐng)求遵循的緩存機(jī)制;User-Agent字段表示瀏覽器版本信息;X-Requested-With字段的值為XMLHttpRequest表示請(qǐng)求是Ajax異步請(qǐng)求,值為null表示請(qǐng)求是傳統(tǒng)同步請(qǐng)求;Host字段表示請(qǐng)求的服務(wù)器網(wǎng)址;Cookie字段是一些網(wǎng)站為了辨別用戶身份、進(jìn)行session跟蹤而存儲(chǔ)在用戶本地終端商的數(shù)據(jù)。

表1 POST請(qǐng)求報(bào)頭數(shù)據(jù)格式

POST文本數(shù)據(jù)抓取方案設(shè)計(jì)

抓取POST文本數(shù)據(jù)的基本流程如圖1。首先,需要讀取字符串url,并根據(jù)字符串url建立URL類(lèi)的實(shí)例postURL,此后需要建立postURL連接,這將返回一個(gè)HttpURLConnection類(lèi)的對(duì)象connection,此時(shí)并沒(méi)有創(chuàng)建實(shí)際的網(wǎng)絡(luò)連接。其次,要給對(duì)象connection設(shè)置連接屬性,其中,首先要調(diào)用setRequestMethod方法將請(qǐng)求方式設(shè)置為POST;其次需分調(diào)用setDoOutput和setDoInput方法將參數(shù)都設(shè)置為true,這是因?yàn)镻OST請(qǐng)求的參數(shù)是放在http正文內(nèi);此后,需要調(diào)用setRequestProperty方法,該方法有兩個(gè)參數(shù)分別是key和value,參數(shù)key可參考表1中第一列的數(shù)據(jù)來(lái)設(shè)置,參數(shù)value的值與表1中第二列的數(shù)據(jù)類(lèi)似,針對(duì)來(lái)自不同的源的POST網(wǎng)頁(yè)可依照抓包代理工具中捕獲的POST請(qǐng)求報(bào)頭信息來(lái)設(shè)置key和value的值。設(shè)置好連接屬性后,就可以調(diào)用connection對(duì)象的connect方法來(lái)打開(kāi)到postURL引用的資源的通信鏈接。應(yīng)該注意的是,設(shè)置連接屬性必須在打開(kāi)連接之前,否則將會(huì)發(fā)生錯(cuò)誤。最后,建立字符輸入流對(duì)象讀取文本數(shù)據(jù)并保存到本地,流程結(jié)束。

若要批量抓取POST文本數(shù)據(jù),需要對(duì)圖1中描述的方案的流程進(jìn)行改進(jìn)。在給對(duì)象connection設(shè)置連接屬性這一步驟中,有一個(gè)字段為Cookie。Cookie分為非持續(xù)Cookie(nonpersistent cookie)和持續(xù)Cookie(persistent cookie)。如果沒(méi)有給Cookie設(shè)置過(guò)期時(shí)間,則Cookie會(huì)在關(guān)閉瀏覽窗口時(shí)消失,這樣的Cookie被稱為非持續(xù)Cookie。非持續(xù)Cookie一般被保存在內(nèi)存里。如果設(shè)置了Cookie的過(guò)期日期,則它將被一直保存直到過(guò)期位置,這樣的Cookie被稱為持續(xù)Cookie。 火狐瀏覽器的持續(xù)Cookie被保存在數(shù)據(jù)庫(kù)cookies.sqlite中,過(guò)期日期由expiry字段記錄。獲取持續(xù)Cookie的方法有以下兩種:

連接數(shù)據(jù)庫(kù)cookies.sqlite,選擇表moz_cookies,讀取name、value和expiry字段的值;

建立WebDriver類(lèi)的對(duì)象打開(kāi)瀏覽器,建立并打開(kāi)url鏈接后獲取cookie的name、value和expiry字段的值。

第一種方法在數(shù)據(jù)庫(kù)cookies.sqlite中表格的數(shù)據(jù)沒(méi)有加密的情況下可通過(guò)Class.forName(org.sqlite. JDBC)連接SQLite的JDBC來(lái)實(shí)現(xiàn)。第二種方法的原理是在打開(kāi)瀏覽器并打開(kāi)url鏈接時(shí)保存服務(wù)器向客戶端發(fā)送的Cookie。顯然,第二種方法比第一種方法更加通用。因此,本課題采用第二種方法來(lái)獲取Cookie,流程圖見(jiàn)圖2。

采用圖2中描述的方法可以完整地得到Cookie的name和value,又根據(jù)持續(xù)Cookie有過(guò)期日期的特性,設(shè)計(jì)出了批量抓取POST文本數(shù)據(jù)的流程圖,見(jiàn)圖3。當(dāng)保存好當(dāng)前抓取到的文本數(shù)據(jù)后,并在抓取下一個(gè)頁(yè)面前,需要判斷當(dāng)前日期是否在Cookie的過(guò)期日期之前。若為真,說(shuō)明此前得到的Cookie仍然有效,可繼續(xù)使用;若為假,需要刷新網(wǎng)頁(yè)重新抓取Cookie和過(guò)期日期。由于在獲取Cookie的過(guò)程中打開(kāi)了firefox瀏覽器,因此抓取完預(yù)計(jì)的所有頁(yè)面后,需要關(guān)閉瀏覽器,到此整個(gè)流程結(jié)束。

圖1 抓取POST文本數(shù)據(jù)的基本流程圖圖2 獲取持續(xù)Cookie流程圖

圖3 批量抓取POST文本數(shù)據(jù)流程圖

實(shí)驗(yàn)結(jié)果

調(diào)試好各模塊的程序后,需配置好URL和文本的保存路徑。以中國(guó)裁判文書(shū)網(wǎng)為例,運(yùn)行程序,見(jiàn)表2所示的統(tǒng)計(jì)結(jié)果。

表2 實(shí)驗(yàn)結(jié)果

結(jié)束語(yǔ)

本文介紹了抓取POST文本數(shù)據(jù)的詳細(xì)步驟,在執(zhí)行抓取文本程序的過(guò)程中,曾出現(xiàn)過(guò)返回502 Bad Gateway的HTTP狀態(tài)消息的情況。這是由于服務(wù)器從上游服務(wù)器收到一個(gè)無(wú)效的響應(yīng)。此種情況可通過(guò)記錄抓取進(jìn)程的方式解決,在再次執(zhí)行程序時(shí)就不會(huì)出現(xiàn)抓取重復(fù)文本的錯(cuò)誤。通過(guò)反復(fù)的實(shí)驗(yàn),驗(yàn)證了此種抓取方式的可行性,并且操作簡(jiǎn)單。

10.3969/j.issn.1001- 8972.2016.18.006

猜你喜歡
萬(wàn)維網(wǎng)報(bào)頭字段
圖書(shū)館中文圖書(shū)編目外包數(shù)據(jù)質(zhì)量控制分析
城市黨報(bào)報(bào)頭:政治與藝術(shù)的平衡
5 Fast Facts About the World Wide Web on Its 30th Birthday萬(wàn)維網(wǎng)30年:小知識(shí)一覽
萬(wàn)維網(wǎng)30歲,創(chuàng)始人發(fā)公開(kāi)信表達(dá)“不滿意”
淡妝濃抹總相宜
——對(duì)中國(guó)晚報(bào)報(bào)頭變化的研究與欣賞
大眾文藝(2015年12期)2015-07-13 07:31:22
CNMARC304字段和314字段責(zé)任附注方式解析
無(wú)正題名文獻(xiàn)著錄方法評(píng)述
IP語(yǔ)音報(bào)頭壓縮設(shè)計(jì)與實(shí)現(xiàn)
關(guān)于CNMARC的3--字段改革的必要性與可行性研究
簡(jiǎn)論報(bào)紙的報(bào)頭設(shè)計(jì)
乡城县| 灌阳县| 肃北| 文安县| 昭通市| 酉阳| 平和县| 临潭县| 盘锦市| 平顶山市| 富宁县| 宁安市| 淮南市| 普安县| 白沙| 微博| 孝义市| 门头沟区| 兴国县| 固镇县| 松阳县| 乐平市| 巴彦县| 新宾| 张家界市| 吉安市| 宜兰市| 邹城市| 舟山市| 隆子县| 双城市| 大冶市| 八宿县| 顺义区| 大安市| 大足县| 侯马市| 汶上县| 武夷山市| 应城市| 洪湖市|