仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 573|回复: 7
打印 上一主题 下一主题

[学习教程] NET网页编程之怎样在C#中猎取指定网页源码的示例

[复制链接]
透明 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-16 14:22:22 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
觉得J2EE好像有很多工具,比如servlet,jboss,tomcat,ejb什么的,可是微软的.NET怎么什么也没有啊?在C#中,我们怎样可以猎取到指定网页的源码呢?好比说我们要做一个文章抓取功效的小工具,如许的功效是必不成少的,小编本人做了一个可以猎取网页源码的小工具,把主体代码共享出来,但愿能给老手们一点匡助。

起首先看上面代码:
privatestringGetWebContent(stringurl)
{
HttpWebRequestrequest=(HttpWebRequest)WebRequest.Create(url);
HttpWebResponserespone=(HttpWebResponse)request.GetResponse();
Streamstream=respone.GetResponseStream();

Encodingencoding=Encoding.Default;
if(this.ddlEncoding.SelectedItem!=null&&this.ddlEncoding.SelectedItem.ToString()!=""&&this.ddlEncoding.SelectedItem.ToString()!="Default")
{
encoding=Encoding.GetEncoding(this.ddlEncoding.SelectedItem.ToString());
}

StreamReaderstreamReader=newStreamReader(stream,encoding);
returnstreamReader.ReadToEnd();
}

下面办法的功效是把传进参数(url地点)的网页源码前往给挪用者,但这仅仅是一切源码,我们其实不能从中剥离出网站题目,网站Body元素等,必要准确读到这些元素,我们还要举行下一步处置。
Encodingencoding=Encoding.Default;
if(this.ddlEncoding.SelectedItem!=null&&this.ddlEncoding.SelectedItem.ToString()!=""&&this.ddlEncoding.SelectedItem.ToString()!="Default")
{
encoding=Encoding.GetEncoding(this.ddlEncoding.SelectedItem.ToString());
}
次要用来处置网站的分歧编码,分歧的网站有分歧的编码,假如我们在读取时利用了毛病的编码,那末前往了局中的一切汉字就成了乱码了,以是供应了一个供用户本人选择编码的功效,假如读掏出源码是毛病的,就能够利用别的一种编码再次实验,ddlEncoding(ComboBox控件)供应了一切网站编码选择。

上面是处置GetWebContent(stringurl)办法前往的了局,以准确读掏出网站的题目,body的元素。
privatevoidbutton1_Click(objectsender,EventArgse)
{
try
{
if(this.txtUrl.Text.Trim().Length==0)
{
("请输出主出口地点!");
}
else
{
//这里猎取GetWebContent办法的了局
stringwebContent=GetWebContent(this.txtUrl.Text.Trim());

//声明一个WebBrowser
WebBrowserwebBrowser=newWebBrowser();
webBrowser.Navigate("about:blank");

//将GetWebContent办法前往的了局转化为HtmlDocument,就能够准确处置网页中的元素了。
HtmlDocumenthtmlDoc=webBrowser.Document.OpenNew(true);
htmlDoc.Write(webContent);

//猎取网页中Body中的Html代码
stringouterHtml=htmlDoc.Body.OuterHtml;
//猎取网页的题目
stringouterTitle=htmlDoc.Title;

this.txtDocumentTitle.Text=outerTitle;
this.txtDocumentConent.Text=outerHtml;
}
}
catch(Exceptionex)
{
MessageBox.Show(ex.Message);
}
}

经由过程下面两个步骤,我们就能够准确的读取指定网页中的各元素了,固然,实践处置时,大概还会碰到良多的成绩,好比我们要猎取源码的网站必要用户名与暗码考证,但处置一样平常的网页仍是充足了。我们还能够从猎取到的源码中剖析出A标签,然后再依据剖析出的A标签持续读取源码,就能够完成主动抓取的功效了。不可能天天有学习.net),我一同学说,你应该早就有作品啦。我惶惶然……
再现理想 该用户已被删除
沙发
发表于 2015-1-18 13:42:03 | 只看该作者
ASP(ActiveServerPages)是Microsfot公司1996年11月推出的WEB应用程序开发技术,它既不是一种程序语言,也不是一种开发工具,而是一种技术框架,不须使用微软的产品就能编写它的代码。
admin 该用户已被删除
板凳
发表于 2015-2-3 12:31:14 | 只看该作者
ASP.Net和ASP的最大区别在于编程思维的转换,而不仅仅在于功能的增强。ASP使用VBS/JS这样的脚本语言混合html来编程,而那些脚本语言属于弱类型、面向结构的编程语言,而非面向对象。
第二个灵魂 该用户已被删除
地板
发表于 2015-2-9 00:54:36 | 只看该作者
如今主流的Web服务器软件主要由IIS或Apache组成。IIS支持ASP且只能运行在Windows平台下,Apache支持PHP,CGI,JSP且可运行于多种平台,虽然Apache是世界使用排名第一的Web服务器平台。
小魔女 该用户已被删除
5#
发表于 2015-2-26 16:05:03 | 只看该作者
主流网站开发语言之PHPHP的全名非常有趣,它是一个巢状的缩写名称——“PHP:HypertextPreprocessor”,打开缩写还是缩写。PHP是一种HTML内嵌式的语言(就像上面讲的ASP那样)。而PHP独特的语法混合了C,Java,Perl以及PHP式的新语法。它可以比CGI或者Perl更快速地执行动态网页。
飘飘悠悠 该用户已被删除
6#
发表于 2015-3-8 16:06:06 | 只看该作者
碰到复杂点的问题都不知道能不能解决,现在有点实力的公司都选择自已在开源的基础上做开发。但没听说过有人在IIS上做改进的,windows、sqlserver集群方面的应用也很少见。
因胸联盟 该用户已被删除
7#
发表于 2015-3-16 06:25:05 | 只看该作者
ASP.net1.1和2.0在程序上的语法也有很大不同,现在2.0属于新出来的,不知道半年后会不会有3.0(说笑一下)。Windows2003系统自动支持ASP和ASP.net环境,不用安装任何程序。Asp.net属于编译语言。ASP的最大不同(ASP属于解释语言)。
爱飞 该用户已被删除
8#
发表于 2015-3-22 21:07:20 | 只看该作者
同时也感谢博客园给我们这个平台,也感谢博客园的编辑们做成专题引来这么多高人指点。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-9-28 06:07

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表