求一个C#的网页数据抓取源代码 求一个C#的网页数据抓取源代码 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 #region 范例//抓取的就是这个地址http://www.baidu.com/s?ie=utf-8&bs=aa&f=8&rsv_bp=1&rsv_spt=3&wd=%E7%88%B1%E7%BE%8E%E4%B8%BD&rsv_sug3=8&rsv_sug=0&rsv_sug1=7&rsv_sug4=272&inputT=3873 这个百度搜索结果页面的如【imis.tmall.com/ 20小时前】中的URL的集合。 public static IList<string> GetUrls(){ WebClient MyWebClient = new WebClient(); MyWebClient.Credentials = CredentialCache.DefaultCredentials;//获取或设置用于向Internet资源的请求进行身份验证的网络凭据 Byte[] pageData = MyWebClient.DownloadData("http://www.baidu.com/s?ie=utf-8&bs=aa&f=8&rsv_bp=1&rsv_spt=3&wd=%E7%88%B1%E7%BE%8E%E4%B8%BD&rsv_sug3=8&rsv_sug=0&rsv_sug1=7&rsv_sug4=272&inputT=3873"); //从指定网站下载数据 //string pageHtml = Encoding.Default.GetString(pageData); //如果获取网站页面采用的是GB2312,则使用这句 string pageHtml = Encoding.UTF8.GetString(pageData); //如果获取网站页面采用的是UTF-8,则使用这句 string test = @"(?isx)<span[^>]*class=""g"">(?><span[^*]class=""g"">(?<O>)|</sapn>(?<-O>)|(?:(?!</?span\b).)*)*(?(O)(?!))</span>"; Regex reg = new Regex(test); MatchCollection mc = reg.Matches(pageHtml); IList<string> urlList = new List<string>(); foreach (Match m in mc) { urlList.Add(Regex.Match(m.ToString(), @"(?<=<span[^>].*class=""g"">).*(?=</span>)").ToString()); } return urlList;}#endregion 谢谢sibiyellow的回复,出现 远程服务器返回错误: (407) 需要代理身份验证。 用webbroswer控件,应该能搞到吧, 简单的方式用webBrowser,打开网页myWebBrowser.Navigate(strUrl);在DocumentCompleted事件中获取源码myWebBrowser.Document.Body.OuterHtml之类的然后看源码规律获取想要的信息 WeifenLuo.WinFormsUI.Docking的一个问题 莫名奇妙被报告说是病毒 简单的sql查询里的字母大小写问题。 ADO.Net处理完数据以后为什么不能释放占用的内存资源?如何进行释放? 面向对象转化为实际的代码——请大家指点 C#中,如何来存储类似复选性质的属性更为合适? 我有一设备管理软件想外包 托盘程序问题,急!! 邮件问题 新手求助 关于数据库连接 c#绘图程序 内存占用巨大,求解决 各位有没写的好的SQL池类自我推荐下?
#region 范例
//抓取的就是这个地址http://www.baidu.com/s?ie=utf-8&bs=aa&f=8&rsv_bp=1&rsv_spt=3&wd=%E7%88%B1%E7%BE%8E%E4%B8%BD&rsv_sug3=8&rsv_sug=0&rsv_sug1=7&rsv_sug4=272&inputT=3873 这个百度搜索结果页面的如【imis.tmall.com/ 20小时前】中的URL的集合。
public static IList<string> GetUrls()
{
WebClient MyWebClient = new WebClient();
MyWebClient.Credentials = CredentialCache.DefaultCredentials;//获取或设置用于向Internet资源的请求进行身份验证的网络凭据
Byte[] pageData = MyWebClient.DownloadData("http://www.baidu.com/s?ie=utf-8&bs=aa&f=8&rsv_bp=1&rsv_spt=3&wd=%E7%88%B1%E7%BE%8E%E4%B8%BD&rsv_sug3=8&rsv_sug=0&rsv_sug1=7&rsv_sug4=272&inputT=3873"); //从指定网站下载数据
//string pageHtml = Encoding.Default.GetString(pageData); //如果获取网站页面采用的是GB2312,则使用这句
string pageHtml = Encoding.UTF8.GetString(pageData); //如果获取网站页面采用的是UTF-8,则使用这句
string test = @"(?isx)<span[^>]*class=""g"">(?><span[^*]class=""g"">(?<O>)|</sapn>(?<-O>)|(?:(?!</?span\b).)*)*(?(O)(?!))</span>";
Regex reg = new Regex(test);
MatchCollection mc = reg.Matches(pageHtml);
IList<string> urlList = new List<string>();
foreach (Match m in mc)
{
urlList.Add(Regex.Match(m.ToString(), @"(?<=<span[^>].*class=""g"">).*(?=</span>)").ToString());
}
return urlList;
}
#endregion
用webBrowser,打开网页
myWebBrowser.Navigate(strUrl);在DocumentCompleted事件中获取源码
myWebBrowser.Document.Body.OuterHtml之类的然后看源码规律获取想要的信息