ViewState在ASP.NET网页抓取中的应用

来源 :科技风 | 被引量 : 0次 | 上传用户:wsgray
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
  摘 要:本文主要介绍_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.
其他文献
半命题作文具有限制又开放的双重特征,对于小学生练习写作尤其适合。文章分析了半命题作文的特点、形式、写法以及需要注意的问题,以期让语文老师更好地认识半命题作文,让半
合作学习是课改下的主要的学习方式,初中语文作文教学也不例外,在初中语文作文教学中,有效运用合作学习,能使学生突破思维定势,培养学生的群体意识,创新意识.提高学生的创造能力。
用2,3-吡嗪二酸作为配体和碳酸锶反应合成2,3-吡嗪二酸锶配合物([Sr2(pdc)2(H2O)7]·H2O,分子式:Sr2C12H20N4O16,H2pdc=2,3-吡嗪二酸),以该配合物作为前驱体在不同温度下
当命运的蛛网束缚了渴望飞翔的翅膀,当无情的风雨浸湿了荡气回肠的梦想,当艰难的生活困顿了向往高贵的灵魂,你的内心,是否还保留一份坚守的美丽?高原上的普雅花历经沧桑,执着坚守,换
滁州设立迄今1400余年,历史沿革清晰可考.本文通过考稽上古滁州的一些方舆古国踪迹,以期见微知著,映现滁州先人的活动信息.
教育学范畴上的创新能力不但与智力有关,也与其追求创意的人格特征息息相关,可以说是一种积极改变自身,以更好适应环境、改变环境的应变能力。本文分析当前小学生作文创新能力的
将WebGIS应用于矿区环境监测中,对于矿区环境管理、数字环保和矿区的可持续发展具有重要的意义.通过WebGIS概念的引入,在分析ArcIMS结构及原理的基础上,提出了基于ArcIMS的矿区环境监测WebGIS的实现方案;深入探讨了系统需求、数据组织、系统结构及功能设计,结合ASP技术实现了客户端的定制和ArcIMS的二次开发,对环保部门和其他部门使用ArcIMS进行专题性WebGIS建设具有重要
国家将起重机械列为特种设备加以特殊管理,但目前的使用现状令人担忧,本文分析造成问题的原因,提出杜绝安全事故的对策.
摘 要:在互联网+时代,如何应用电子商务管理企业,提升企业的竞争能力是企业管理者要考虑的重要问题。互联网带动电子商务的发展,物流营销专业如何利用网络平台进行企业管理和发展是物流营销专业进行专业建设的切入点。本文按照理论与实践相结合的论述原则探讨了物流营销专业建设创新的对策,以促进物流产业的健康发展并为相关院校提供参考。  关键词:互联网;物流营销;专业建设;创新研究  互联网+是互联网发展到一定程
ASP技术作为一种强大的动态网络应用开发工具正日益流行起来,本文讨论了B/S模式的管理信息系统的主要原理以及关键技术,并以实际应用中所开发的机关部门信息传输管理系统为例