999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

ViewState在ASP.NET網頁抓取中的應用

2017-05-30 12:00:50申圣兵劉家樂
科技風 2017年3期

申圣兵 劉家樂

摘 要:本文主要介紹_ViewState屬性值的動態獲取方法,并通過教師課程表介紹它在ASP.NET網頁抓取中的應用方法及注意事項。

關鍵詞:ViewState;網頁抓取;教師課程表

在Asp.net中,如果一個Web窗體控件設置了runat=”server”,這個控件會被附加一個隱藏的屬性_ViewState,_ViewState存放了所有控件在ViewState中的狀態值,這個值在網頁抓取分析并利用相關參數進行模擬發送請求時是必不可少的,這個值在有些頁面取值相對固定,所以有些網頁抓取程序直接使用固定值,但更多的情況下,這個值需要動態獲取。

下面以獲取教師課表信息為例,介紹如何動態獲取這個值和使用它。

如果直接抓取當前頁面,得不到任何有用信息,因為它是通過多次回傳來完成的。先選擇“學年”,才會出現系部名稱信息,選擇不同的系部,后面的教師信息也會發生改變,只有這些信息都選好后,點擊查詢,才能得到相應教師的課表信息。

整個過程需要多次模擬網頁發送,網頁源碼中的_ViewState值也多次會發生改變,如何獲取這些_ViewState的值和使用它們,成為成功獲取教師課表信息的關鍵。

具體步驟如下:

(1)設置該屬性的標記字符串

private static String viewStateFlag="name=\"__VIEWSTATE\" value=\"";

(2)設計獲取屬性值的函數

public static String getViewState(String strResult) {

//strResult為網頁源碼

int len1 = strResult.indexOf(viewStateFlag) + viewStateFlag.length();

int len2 = strResult.indexOf("\"", len1);

vs = new String(strResult.substring(len1, len2));

return vs;

}

(3)使用用戶的登陸信息,再調用HttpClient類的get方法模擬網頁以get方法提交參數來獲取第一次的_ViewState值vs1。

httpClient.get(url, params1, new AsyncHttpResponseHandler() )

//url:訪問的網址,params1:相關參數,AsyncHttpResponseHandler:返回的相關信息成功后,再調用getViewState函數得到值vs1。

vs1=getViewState(strResult) //strResult為返回成功的網頁源碼

(4)經過第一次get方法模擬提交網頁信息后,就可以得到網頁課表的學年信息,如2015-2016等。

(5)選擇學年及學期后,再將相關參數與vs1一起進行封裝,模擬post方法提交網頁信息,得到第二次的_ViewState值vs2。

httpClient.post(url, params2, new AsyncHttpResponseHandler() )

(6)成功后就可以得到學院的系部信。

(7)由于選擇不同的系部,頁面會再一次進行刷新,得到不同的教師列表信息,_ViewState的值也會發生改變,所以還要繼續獲取新的_ViewState的值。由于這一次提交的參數包含有中文信息,所以參數的封裝也有一些變化,需要提交的參數封裝后還需要重新編碼。

HttpEntity entity=new UrlEncodedFormEntity(params,"gb2312");

提交的方式也與前面的有所不同。

httpClient.post(TCourseQueryActivity.this, urlTCourse, entity, "application / x-www-form-urlencoded;charset=gb2312", new AsyncHttpResponseHandler())

成功后,再調用getViewState函數得到值vs3。

vs3=getViewState(strResult) //strResult為返回成功的網頁源碼

(8)最后,再將vs3與其他的參數一起進行封裝,就可以得到真實的課表信息了。

結語

_ViewState雖然是一個隱藏的區域,但是它在網頁抓取的過程中是一個非常重要的參數,有些頁面需要經過多次提交回傳才能得到最終需要的數據信息,它的獲取相對復雜,本文提到的抓取教師課表就經過了三次獲取_ViewState的值的過程,初始_ViewState的值vs1,選擇年份之后的_ViewState值vs2,選擇教師之后的_ViewState值vs3,最終獲取到教師課表信息。所以,熟練掌握_ViewState值的獲取方法是成功抓取.net網頁數據非常重要的一環。

參考文獻:

[1] 莫學值.試析視圖狀態(ViewState)在ASP.NET中的應用.廣西教育學院學報,2009,03.

[2] 楊敏.關于Asp.net中static與ViewState使用的探討.吉林廣播電視大學學報,2010,09.

[3] 翁巖青.網頁抓取策略研究.哈爾濱工程大學,2010.

主站蜘蛛池模板: 蜜臀AVWWW国产天堂| hezyo加勒比一区二区三区| 极品国产在线| 欧美亚洲欧美| 自拍中文字幕| 国内精品一区二区在线观看| 免费人成黄页在线观看国产| 国产精品成人观看视频国产| 国产AV毛片| 久久精品嫩草研究院| 亚洲无码37.| 国产欧美亚洲精品第3页在线| 国产麻豆另类AV| 99久久精品国产自免费| 国产福利在线免费观看| 国产成人精品男人的天堂下载| 欧美精品成人一区二区在线观看| 视频二区亚洲精品| 中文字幕波多野不卡一区 | V一区无码内射国产| 日韩天堂网| 欧美一级黄色影院| 青青操视频免费观看| 亚洲欧美日韩中文字幕在线一区| 欧美激情福利| 国产精品一区在线观看你懂的| 日本精品一在线观看视频| 五月综合色婷婷| 999福利激情视频| 高潮爽到爆的喷水女主播视频| 国产一区二区丝袜高跟鞋| 国产伦精品一区二区三区视频优播| 日本AⅤ精品一区二区三区日| 国产精品污视频| 国产成人综合亚洲欧美在| 一级爱做片免费观看久久| 手机永久AV在线播放| 中文字幕第1页在线播| 欧美在线精品怡红院| www.亚洲一区二区三区| 特级毛片8级毛片免费观看| 亚洲国产精品不卡在线 | www.youjizz.com久久| 欧美激情,国产精品| 国产精品美女自慰喷水| 日韩精品一区二区深田咏美| 手机在线看片不卡中文字幕| 黄网站欧美内射| 在线欧美日韩国产| 黄色片中文字幕| 国产黄色爱视频| 女人毛片a级大学毛片免费| 中文字幕日韩视频欧美一区| 一区二区三区在线不卡免费| 国产一区二区三区精品久久呦| 国产极品美女在线| 中文国产成人精品久久| 天天综合天天综合| 国产成人精品高清不卡在线| 国产精品一区在线麻豆| 日本成人在线不卡视频| 成人福利在线免费观看| 91精品视频网站| 激情综合网激情综合| 亚洲人成影院午夜网站| 国产农村1级毛片| 国产精品性| 亚洲国产天堂在线观看| 国产一在线观看| a亚洲视频| 狠狠做深爱婷婷久久一区| 精品久久国产综合精麻豆| 久久精品国产精品青草app| 黄色三级网站免费| 在线高清亚洲精品二区| 97久久人人超碰国产精品| 国产区91| 欧美特黄一级大黄录像| 亚洲人成网站在线播放2019| AV无码一区二区三区四区| 成人午夜在线播放| 欧美日韩激情|