首页 > 编程 > .NET > 正文

ASP.NET利用webclient获取页面源代码的解决方

2024-07-10 13:10:49
字体:
来源:转载
供稿:网友
  • 网站运营seo文章大全
  • 提供全面的站长运营经验及seo技术!
  •   页面中包括datagrid时,利用webclient获取页面源代码的解决方

       主要问题,利用webclent获取页面源代码时,当页面中含有datagrid,并且该控件使用了自带的分页功能时,正常的方法只能获取第一页面的数据,其它页面的数据取不到,以下是解决方法。

      方法一:

      主要思路是利用webclient,post数据到服务来取得数据,这里主要用了一个小工具可以分析页面的组成及运行过程,分析中发现当点击下一页时,会post三个参数过去, 分别是:__eventtarget、__eventargument、__viewstate。这里__viewstate参数在从打开第一页数据时取得,__eventtarget为要调用控件的名称(可以通过httpwatch来获取) ,__eventargument是调用事件时的参数,代码如下:

       string result="";
       result = this.loadtop ("http://localhost/projectinfo.aspx?jobno1=2001-09110");
         string vie = gettagcontent(result,"name=/"__viewstate/" value=/"","/" />");
       vie=vie.replace ("name=/"__viewstate/" value=/"","");
       vie=vie.replace ("/" />","");
       webclient a = new webclient();
       namevaluecollection na = new namevaluecollection();
       na.add("__eventtarget","newhousegridmodule1:modulesplitpage:lbnnextpage");
       na.add("__viewstate",vie); 
       byte [] ss = a.uploadvalues("http://localhost/projectinfo.aspx?jobno1=2001-09110","post",na);
       encoding encode=encoding .getencoding ("utf-8");
       result=encode.getstring(ss);

      方法二:

      利用axwebbrowser控件,下载第一页,然后在最下面这如下代码:

    <script language='javascript' type='text/javascript'>__dopostback('newhousegridmodule1$modulesplitpage$lbnnextpage','');</script>

    发表评论 共有条评论
    用户名: 密码:
    验证码: 匿名发表