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.

主站蜘蛛池模板: 亚洲区第一页| 亚洲毛片在线看| 欧美日韩在线成人| 97视频免费在线观看| 日韩精品一区二区三区免费| 午夜视频免费一区二区在线看| 午夜精品一区二区蜜桃| 亚洲国产一区在线观看| 国产丝袜91| AV无码一区二区三区四区| 国产拍在线| 国产成人超碰无码| 亚洲精品无码成人片在线观看| 免费人欧美成又黄又爽的视频| 国产亚洲欧美另类一区二区| 欧美黄网站免费观看| 草草影院国产第一页| 天天综合网色中文字幕| 中文字幕日韩欧美| 天天综合网色中文字幕| yy6080理论大片一级久久| 国产网站在线看| 午夜老司机永久免费看片| 成人日韩欧美| 中文字幕在线日本| 激情视频综合网| 国产成人免费视频精品一区二区| 制服丝袜一区二区三区在线| 午夜丁香婷婷| 亚洲欧美自拍视频| 在线观看国产小视频| 高清无码一本到东京热| 色综合国产| 国产乱子伦手机在线| 国产激爽爽爽大片在线观看| 免费一极毛片| 欧美黑人欧美精品刺激| 亚洲视频四区| 久久综合AV免费观看| 中国精品自拍| 四虎亚洲精品| 亚洲天堂区| jizz国产视频| 26uuu国产精品视频| 91国语视频| 色婷婷狠狠干| 特黄日韩免费一区二区三区| …亚洲 欧洲 另类 春色| 亚洲一区网站| 女人18一级毛片免费观看| 香蕉eeww99国产在线观看| 久草网视频在线| 日韩精品一区二区深田咏美| 国产免费高清无需播放器 | 国产凹凸视频在线观看| 99久久人妻精品免费二区| 2021国产在线视频| 青青草原国产精品啪啪视频| 国产在线视频福利资源站| 国产午夜看片| 国产精欧美一区二区三区| 国产午夜看片| 999国产精品| 四虎成人免费毛片| 国产毛片不卡| 国产日韩欧美精品区性色| 国产97视频在线观看| 视频一区视频二区中文精品| 国产在线精品99一区不卡| 天堂网亚洲系列亚洲系列| 久久精品波多野结衣| 亚洲aaa视频| 精品伊人久久久久7777人| 国产成人精品一区二区不卡 | 亚洲欧洲免费视频| 青青草欧美| 一级毛片免费观看不卡视频| 91久久夜色精品国产网站| 欧美成人精品高清在线下载| 四虎AV麻豆| 亚洲日本www| 欧美日韩国产精品va|