业界动态
万能免费信息采集软件-免费网站信息内容数据采集软件
2024-10-31 13:27
简单C#信息采集工具实现

万能免费信息采集软件-免费网站信息内容数据采集软件

http://blog.csdn.net/xiaoxiao108/archive/2011/06/01/6458367.aspx 最近想整只爬虫玩玩,顺便熟悉下正则表达式。 开发环境 vs2008 sql2000 实现方法如下 1.先抓取网页代码 2.通过正则匹配出你需要的内容 比如http://www.soso.com/q?w=%C4%E3%BA%C3&pg=1 页面中 搜索结果的标题跟连接地址。具体可以根据你的需要填写合适的地址跟正则。 3.把匹配出的内容保存到数据库中。对其中的数据可以根据需要自己进行处理 具体实现代码 1.读取网页的代码 public static string GetDataFromUrl(string url) string str = string.Empty; HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url); //设置Http头; request.AllowAutoRedirect = true; request.AllowWriteStreamBuffering = true; request.Referer = ""; request.Timeout = 10 * 1000; //request.UserAgent = "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; SV1; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022)"; HttpWebResponse response = null; try response = (HttpWebResponse)request.GetResponse(); if (response.StatusCode == HttpStatusCode.OK) //根据http应答头来判别编码 string Characterset = response.CharacterSet; Encoding encode; if (Characterset != "") if (Characterset == "ISO-8859-1") Characterset = "gb2312"; encode = Encoding.GetEncoding(Characterset); else encode = Encoding.Default; //声明一个内存流来贮存http应答流 Stream Receivestream = response.GetResponseStream(); MemoryStream mstream = new MemoryStream(); byte[] bf = new byte[255]; int count = Receivestream.Read(bf, 0, 255); mstream.Write(bf, 0, count); count = Receivestream.Read(bf, 0, 255); Receivestream.Close(); mstream.Seek(0, SeekOrigin.Begin); //从内存流里读取字符串这里涉及到了编码方案 StreamReader reader = new StreamReader(mstream, encode); char[] buf = new char[1024]; str += new string(buf, 0, 1024); reader.Close(); mstream.Close(); catch (Exception ex) GetDataFromUrl(url); finally if (response != null) response.Close(); return str; 2.正则匹配的代码 public static ArrayList GetString(string reg, string content) Regex r = new Regex(reg, RegexOptions.Compiled); MatchCollection matches = r.Matches(content); ArrayList a = new ArrayList(); foreach (Match m in matches) string[] arr = new string[10]; arr[0] = m.Groups[1].Value; arr[1] = m.Groups[2].Value; arr[2] = m.Groups[3].Value; arr[3] = m.Groups[4].Value; arr[4] = m.Groups[5].Value; arr[5] = m.Groups[6].Value; arr[6] = m.Groups[7].Value; arr[7] = m.Groups[8].Value; arr[8] = m.Groups[9].Value; arr[9] = m.Groups[10].Value; a.Add(arr); return a; 3.如果抓取的页面很多 ,可以把多线程跟队列应用过来,提高抓取效率 Queue numbers = new Queue(); const int MaxCount = 5;//同时运行的最多线程数 private static object _lock = new object(); private void Test() while (true) int i = 0; lock (_lock) if (numbers.Count == 0) flag = false; return; i = numbers.Dequeue(); f(i); void Ssss() for (int i = 1; i <= 100; i++)//处理的页面参数 从http://www.soso.com/q?w=你好&pg=1 到http://www.soso.com/q?w=你好&pg=100 numbers.Enqueue(i); for (int i = 0; i < MaxCount; i++) Thread thread = new Thread(new ThreadStart(Test)); thread.Name = "T" + i.ToString(); thread.Start(); private void f(int num) string str = ClassLibrary1.Class1.GetDataFromUrl("http://www.soso.com/q?w=%C4%E3%BA%C3&pg="+num); string reg = "]+? target="_blank">([\s\S]+?)"; ArrayList a = ClassLibrary1.Class1.GetString(reg, str); for (int i = 0; i ] 除了>以为的字符 [一-龥] 汉字 6.代码只是实现了信息采集的主要功能,根据你自己的需要更换采集页面,跟合适的正则表达式后,可以根据你的需要自动进行采集,对采集到的数据,再根据你的需要自己进行处理。 7.数据库操作部分用的3层代码生成器连接地址 在 app.config中    以上就是本篇文章【万能免费信息采集软件-免费网站信息内容数据采集软件】的全部内容了,欢迎阅览 ! 文章地址:http://mdekt.bhha.com.cn/news/57.html 
     资讯      企业新闻      行情      企业黄页      同类资讯      首页      网站地图      返回首页 康宝晨资讯移动站 http://weazh.bhha.com.cn/ , 查看更多   
最新新闻
35位数!巨头收天价罚单,超全球GDP总和
10月31日,“谷歌被俄罗斯罚款35位数”冲上微博热搜榜第一。据央视新闻报道,当地时间10月29日,因谷歌公司在视频网站优兔(YouT
《NCX》软件的搜索功能如何使用?
一、概述《NCX》是一款功能强大的数据搜索和分析,它能够通过先进的搜索技术,帮助用户快速、准确地找到所需的数据。本篇文章将
世界科学史上十大“最意外的发明”
  俗话说 ” 需要是发明之母 “,然而许多发明家或许不太肯承认的是,” 运气 ” 有时也是发明之母。很多人都以为科学史上许多
SQL与NoSQL未来会走向融合?
开发应用程序时之前最基础的工作之一是评估该使用SQL还是NoSQL 数据库来存储数据。传统数据库,即使用SQL(结构化查
怎么查看每天网站有多少人访问?加个代码或插件就行了
当自己搭建好一个网站后,每天更新了文章,一定还想知道有多少人访问了自己的网站吧。查看每天网站有多少IP的东西,我们称它为统
Python 静态网页信息爬取
在当今数字化时代,数据的价值不言而喻。对于研究人员、开发者和数据分析师来说,能够从互联网的海量信息中提取所需
2023开年抖音直播带货分析
随着互联网技术的发展,以直播为代表的KOL(关键意见领袖)带货模式给消费者带来更直观、生动的购物体验,转化率高,营销效果好
9岁儿童脑筋急转弯
9岁儿童脑筋急转弯大全  还记得小时后和小伙伴们经常说的那些脑筋急转弯吗?它们充满着我们儿时的回忆。下面小编为您搜集了9岁
java操作minio删除文件夹及其文件方法
Minio是一款开源的对象存储服务,可以用来存储和管理大量的数据。在Minio中,可以使用Java API来进行对象的操作,包括上传、下载
上升造句
1、从方便计算的角度上建议段采用比例方程表示,下降段简化为以拐点分界的两部分直线。2、这个季度初,厂家新研究了一种型号的液
本企业新闻
推荐企业新闻