CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
不看会后悔的Windows XP之经验谈 简单快捷DIY实用家庭影院
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  .NET技术 >  ASP.NET

(超急)跪求高手:为什么我取不到网页的源代码?

楼主Hexudong1979(何须懂何必懂)2006-07-04 08:51:15 在 .NET技术 / ASP.NET 提问

前台页面:.aspx  
  <%@   Import   NameSpace="System.Data"   %>  
  <%@   Page   language="c#"   Codebehind="PageHtml.aspx.cs"   AutoEventWireup="false"   Inherits="Web.Frame.PageHtml"   validateRequest=false     %>  
  <!DOCTYPE   HTML   PUBLIC   "-//W3C//DTD   HTML   4.0   Transitional//EN"   >  
  <HTML>  
  <HEAD>  
  <title>PageHtml</title>  
  <meta   content="Microsoft   Visual   Studio   .NET   7.1"   name="GENERATOR">  
  <meta   content="C#"   name="CODE_LANGUAGE">  
  <meta   content="JavaScript"   name="vs_defaultClientScript">  
  <meta   content="http://schemas.microsoft.com/intellisense/ie5"   name="vs_targetSchema">  
  <LINK   href="../Style.css"   type="text/css"   rel="stylesheet">  
  </HEAD>  
  <body   bgColor="#d4dcef"   leftMargin="0"   topMargin="0">  
  <form   id="Form1"   method="post"   runat="server">  
  <table   height="100%"   cellSpacing="0"   cellPadding="0"   width="95%"   align="center"   border="0">  
  <tr>  
  <td   vAlign="top"   width="100%"   height="30"><asp:button   id="btnGet"   runat="server"   CssClass="button4"   Text="获取列表"></asp:button>&nbsp;    
  &nbsp;  
  <asp:textbox   id="txtHtml1"   runat="server"   Width="100"></asp:textbox><asp:button   id="Button1"   runat="server"   Text="Button"></asp:button>  
  <div   id="divHtml"   runat="server"></div>  
  &nbsp;</td>  
  </tr>  
  <asp:repeater   id="rpt"   Runat="server">  
  <itemtemplate>  
  <tr   width="50%"   align="center">  
  <td   align="left"   valign="top"   align="center"   width="50%"   height="30">  
  <%#   ((DataRowView)Container.DataItem)["href"].ToString()   %>  
  &nbsp;  
  </td>  
  </tr>  
  </itemtemplate>  
  </asp:repeater>  
  <tr   id="trFrame"   runat="server">  
  <td   vAlign="top"   align="center"   width="96%"   height="96%"><iframe   id="oIframe"   name="oIframe"   src="http://www.sina.com.cn"   frameBorder="no"  
  width="100%"   scrolling="auto"   height="275"></iframe>  
  </td>  
  </tr>  
  </table>  
  </form>  
  </body>  
  </HTML>  
   
   
  后台代码:.aspx.cs  
  private   void   Page_Load(object   sender,   System.EventArgs   e)  
  {  
  //把iframe中的页面数据截取下来赋值到文本框  
  if   (!this.IsClientScriptBlockRegistered("clientScript1"))  
  {  
  string   script   =   "";  
  script   =   script   +   "<script>";  
  script   =   script   +   "function   GetHtml1(){";  
  script   =   script   +   "document.all.txtHtml1.value=document.frames.item('oIframe').document.documentElement.outerHTML;";  
  script   =   script   +   "}";  
  script   =   script   +   "</script>";  
  this.RegisterClientScriptBlock("clientScript1",   script);//divHtml.InnerText  
  }  
  btnGet.Attributes.Add("onclick",   "GetHtml1();");  
  }  
   
   
  问题:为什么我的txtHtml1.Text的值是空的,请指正我的错误,谢谢高手! 问题点数:100、回复次数:20Top

1 楼gngnandgngn(仗义执言 )回复于 2006-07-04 08:54:34 得分 10

window.all("txtHtml1").valueTop

2 楼milozy1983(Detective)回复于 2006-07-04 08:59:51 得分 15

用这个看看吧  
  ///////////////////////////////////////  
   
  WebRequest   req   =   WebRequest.Create("http://www.csdn.net");  
   
  try    
  {  
  WebResponse   result   =   req.GetResponse();  
  Stream   ReceiveStream   =   result.GetResponseStream();  
   
  Byte[]   read   =   new   Byte[512];  
  int   bytes   =   ReceiveStream.Read(read,   0,   512);  
   
  txtHTML.InnerHtml   =   "";  
  while   (bytes   >   0)  
  {  
   
  //   Note:  
  //   The   following   assumes   that   the   response   uses   UTF-8   as   encoding.  
  //   If   the   content   is   sent   in   a   ANSI   codepage   like   932   use   something   like   this:  
  //     Encoding   encode   =   System.Text.Encoding.GetEncoding("shift-jis");  
  Encoding   encode   =   System.Text.Encoding.GetEncoding("utf-8");  
  txtHTML.InnerHtml   =   txtHTML.InnerHtml   +   encode.GetString(read,   0,   bytes);  
  bytes   =   ReceiveStream.Read(read,   0,   512);  
  }  
  }    
  catch(Exception)    
  {  
  txtHTML.InnerHtml   =   "Error   retrieving   page";  
  }Top

3 楼mmens(快乐中前行!)回复于 2006-07-04 09:02:01 得分 15

可以使用下面语句获取页面源代码:  
   
  TextWriter     =   new   StringWriter();  
  base.Render(new   HtmlTextWriter(TextWriter));  
  writer.Write(TextWriter.ToString());  
  strWrite   =   TextWriter.ToString();Top

4 楼LuoZhiWei2008(追梦)回复于 2006-07-04 09:03:42 得分 15

应该这样写.  
   
  "document.all.+"txtHtml1.ClientID+".value"  
  OR  
  "document.all('"+txtHtml1.ClientID+"').value"  
  or  
  "document.getElementByID('"+txtHtml1.ClientID+"').value"  
    来得到WEB控件中的值.Top

5 楼Hexudong1979(何须懂何必懂)回复于 2006-07-04 09:04:29 得分 0

我只是想得到iframe中所链接网页的源代码  
  上面的方法我都试过了,都不行的Top

6 楼LuoZhiWei2008(追梦)回复于 2006-07-04 09:06:18 得分 0

第一句写错了.  
  更正  
   
  "document.all."+txtHtml1.ClientID+".value"Top

7 楼myminimouse(坚决不用baidu)回复于 2006-07-04 09:18:33 得分 5

upTop

8 楼Eddie005(♂) №.零零伍 (♂)回复于 2006-07-04 09:19:30 得分 15

private   void   Page_Load(object   sender,   System.EventArgs   e)  
                  {  
                          //把iframe中的页面数据截取下来赋值到文本框  
                          if   (!this.IsClientScriptBlockRegistered("clientScript1"))  
                          {  
                                  string   script   =   "";  
                                  script   =   script   +   "<script>";  
                                  script   =   script   +   "function   GetHtml1(){";  
                                  script   =   script   +   "document.getElementById('txtHtml1').value=document.getElementById('oIframe').document.documentElement.outerHTML;;";  
                                  script   =   script   +   "}";  
                                  script   =   script   +   "</script>";  
                                  this.RegisterClientScriptBlock("clientScript1",   script);//divHtml.InnerText  
                          }  
                          btnGet.Attributes.Add("onclick",   "GetHtml1();return   false;");  
                  }Top

9 楼Hexudong1979(何须懂何必懂)回复于 2006-07-04 09:27:23 得分 0

如果我采用Eddie005(♂)   №.零零伍   (♂)   的方法,就会在访问的网页的状态栏产生这样的错误。  
   
  行:   15  
   
  字符:   21  
   
  错误:   缺少对象  
   
  代码:   0  
   
  URL:   http://localhost/Web/Frame/PageHtml.aspxTop

10 楼Hexudong1979(何须懂何必懂)回复于 2006-07-04 09:42:56 得分 0

顶上去Top

11 楼cm8983(思远)回复于 2006-07-04 10:23:05 得分 5

upTop

12 楼Hexudong1979(何须懂何必懂)回复于 2006-07-04 10:41:19 得分 0

怎么没有人能解决吗?Top

13 楼artak(甜葡萄)回复于 2006-07-04 10:51:06 得分 5

ifame的能获取吗?????Top

14 楼Hexudong1979(何须懂何必懂)回复于 2006-07-04 11:56:01 得分 0

哎,谁知道啊?  
  我非常着急  
  如果能帮我解决,我就给他我所有分数Top

15 楼Hexudong1979(何须懂何必懂)回复于 2006-07-04 15:22:41 得分 0

如果我要获取指定的页面的源文件怎么办啊?  
  其中首先看到的查询页面a.html,然后输入查询条件,得到查询结果列表页面b.html,然后再点击列表页面中的链接得到c.html,我要的就是c.html中的数据Top

16 楼Hexudong1979(何须懂何必懂)回复于 2006-07-04 16:20:17 得分 0

upTop

17 楼pbwf(书生)回复于 2006-07-05 09:31:44 得分 5

UPTop

18 楼1111111(我有人品问题-我人品有问题)回复于 2006-07-05 15:54:39 得分 5

帮你upTop

19 楼myminimouse(坚决不用baidu)回复于 2006-07-05 16:24:30 得分 5

upTop

20 楼alore(alore)回复于 2006-07-05 23:41:51 得分 0

首先应通过父文档的ondatasetcomplete事件判断ifame加载的文档是否已经下载完毕,之后再通过ifame的contentWindow属性取得ifame内的文档对象,再通过ifame中包含的文档的document.all取得ifame中的内容。  
  ifame的代码赋值到input控件可以通过input的value实现。Top

相关问题

关键词

得分解答快速导航

  • 帖主:Hexudong1979
  • gngnandgngn
  • milozy1983
  • mmens
  • LuoZhiWei2008
  • myminimouse
  • Eddie005
  • cm8983
  • artak
  • pbwf
  • 1111111
  • myminimouse

相关链接

  • CSDN .NET频道
  • .NET类图书
  • C#类图书
  • .NET类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo