问题描述
usingSystem;usingSystem.Collections.Generic;usingSystem.Linq;usingSystem.Text;usingSystem.Net;usingSystem.IO;usingSystem.Text.RegularExpressions;namespaceConsoleApplication3{classProgram{staticvoidMain(string[]args){//stringurl="http://172.16.101.40";//stringhtml=getHtml(url,Encoding.UTF8);//Regexregex=newRegex("(?<=<title>).*?(?=</title>)");//MatchCollectionmatchCollection=regex.Matches(html);//Console.WriteLine(matchCollection[0].Value);//Console.WriteLine(matchCollection.Count);//Console.WriteLine(html);stringlisturl="http://www.admin5.com/browse/177/";stringlisthtml=getHtml(listurl,Encoding.Default);Regexrlist=newRegex("(?<=href=").*?(?=")");MatchCollectionco=rlist.Matches(listhtml);Console.WriteLine(co.Count);for(inti=0;i<co.Count;i++){if(co[i].Value.ToString().Contains("article")){Console.WriteLine("http://www.admin5.com/"+co[i].Value);Console.WriteLine("抓取内容中...");stringcontenthtml=getHtml("http://www.admin5.com/"+co[i].Value,Encoding.Default);Regexregex=newRegex("(?<=<title>).*?(?=</title>)");MatchCollectionmatchCollection=regex.Matches(contenthtml);//Console.WriteLine("标题:"+matchCollection[0].Value);RegexregexContent=newRegex("<divclass="content">[\s\S]*?</div>");MatchCollectionmatchCollectionContent=regexContent.Matches(contenthtml);//Console.WriteLine("内容:"+matchCollectionContent[0].Value);stringtitle=matchCollection[0].Value;stringcontent=matchCollectionContent[0].Value;Console.WriteLine("保存数据中...");stringdir=Directory.GetCurrentDirectory();if(!Directory.Exists(dir+"\data")){Directory.CreateDirectory(dir+"\data");}File.WriteAllText(dir+"\data"+"\"+i+".txt",title+content,Encoding.Default);Console.WriteLine("保存成功");}}Console.ReadLine();}publicstaticstringgetHtml(stringurl,Encodingencoding){WebClientmyweb=newWebClient();Streamstream=myweb.OpenRead(url);StreamReadersr=newStreamReader(stream,encoding);stringhtml=sr.ReadToEnd();returnhtml;}}}
解决方案
解决方案二:
1.WebClient有DownloadString方法可以直接下载2.请求网络数据建议带上trycatch因为结果是未知的
解决方案三:
引用1楼rayyu1989的回复:
1.WebClient有DownloadString方法可以直接下载2.请求网络数据建议带上trycatch因为结果是未知的
能说的详细一点吗?还是不太懂如何使用呢!
解决方案四:
引用1楼rayyu1989的回复:
1.WebClient有DownloadString方法可以直接下载2.请求网络数据建议带上trycatch因为结果是未知的
这是我的报错信息:未处理System.Net.WebExceptionMessage=远程服务器返回错误:(404)未找到。Source=SystemStackTrace:在System.Net.WebClient.OpenRead(Uriaddress)在System.Net.WebClient.OpenRead(Stringaddress)在ConsoleApplication3.Program.getHtml(Stringurl,Encodingencoding)位置d:C#ProjectConsoleApplication3ConsoleApplication3Program.cs:行号74在ConsoleApplication3.Program.Main(String[]args)位置d:C#ProjectConsoleApplication3ConsoleApplication3Program.cs:行号36在System.AppDomain._nExecuteAssembly(Assemblyassembly,String[]args)在System.AppDomain.ExecuteAssembly(StringassemblyFile,EvidenceassemblySecurity,String[]args)在Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssembly()在System.Threading.ThreadHelper.ThreadStart_Context(Objectstate)在System.Threading.ExecutionContext.Run(ExecutionContextexecutionContext,ContextCallbackcallback,Objectstate)在System.Threading.ThreadHelper.ThreadStart()InnerException:
解决方案五:
已经说的很清楚了,你请求的网页的结果是未知的如你现在的错误是网址404,还有501502各种状态,getHtml方法应该加上trycatch
解决方案六:
引用4楼rayyu1989的回复:
已经说的很清楚了,你请求的网页的结果是未知的如你现在的错误是网址404,还有501502各种状态,getHtml方法应该加上trycatch
好的谢啦!
解决方案七:
熟悉信息采集,有需要可联系