|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
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),我一同学说,你应该早就有作品啦。我惶惶然…… |
|