- 浏览: 111707 次
- 性别:
- 来自: 成都
文章分类
- 全部博客 (134)
- java (134)
- [转]sqlserver 数据类型 及使用考虑 (1)
- 保存、读取、删除到sdcard图片 (1)
- hashcode 重写 (1)
- sql2008导出数据 (1)
- Android开发(1):随机绘制彩色实心圆 (1)
- JPA 应用技巧 1:实体类和实体 DAO 模板 (1)
- 狩魂之神即将开测 - 2012年最值得期待的网页游戏 (1)
- mantis (1)
- MediaWiki (1)
- ExtMail (1)
- MDaemon搭建公司项目环境 (1)
- NIO 之 选择就绪模式 (1)
- web应用系统架构设计 (1)
- XML CDATA (1)
- firefox+Firebug调试JavaScript、HTML和CSS (1)
- 在SUSE 11中安装Windows虚拟机 (1)
- 将字节流(byte[])转换成文件 (1)
- HTML5网站 (1)
- 在Android中自定义IOS风格的按钮 (1)
- 基于SVG的WebGIS的一个雏形 (1)
- 程序名称DreamIT(梦想IT)提供许多IT公司的面试和笔试试题 (1)
- 介绍一个ASP.NET开发工具Web Matrix (1)
- C#信息采集工具实现 (1)
- Qt 4.7.4 完美动态编译发布动态调试,以及静态编译发布 (1)
- 2011面试题目之猴子偷桃 (1)
- Linux tar压缩时排除某个目录或文件的参数 (1)
- Crack JRebel 4.0,无需重启JVM,热部署解决方案 (1)
- Groovy Sql使用Spring的事务管理 (1)
- <<让oracle跑的更快1>>读书笔记2 (1)
- 不要再浪费时间 (1)
- JSP (1)
- PHP (1)
- Python (1)
- Ruby (1)
- Perl概要及各自特点 (1)
- JVM 内存结构(转) (1)
- [转载]JPA 批注参考(1) (1)
- Hadoop配置部分内容 (1)
- HD2刷机的基础知识 HD2的radio、HSPL、ROM三种组合 (1)
最新评论
-
alexyao8:
顶起
[G4Studio开源平台]如何搭建G4开发环境 -
greatghoul:
太二了。
不要再浪费时间 -
wengbo316:
它们一定是花果山的猴子,数数能数到3K多呢。。。
2011面试题目之猴子偷桃 -
mycar:
额.待补充...........
保存、读取、删除到sdcard图片 -
沙舟狼客:
这太折磨人了, 还有人要看吗?
[] javaeye rss抓取
简单C#信息采集工具实现
最近想整只爬虫玩玩,顺便熟悉下正则表达式。
开发环境 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);
while (count > 0)
{
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];
count = reader.Read(buf, 0, 1024);
while (count > 0)
{
str += new string(buf, 0, 1024);
count = reader.Read(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<int> numbers = new Queue<int>();
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 = "<a href=/"([^/"]+?)/" [^>]+? target=/"_blank/">([//s//S]+?)</a>";
ArrayList a = ClassLibrary1.Class1.GetString(reg, str);
for (int i = 0; i < a.Count; i++)
{
string[] arr = (string[])a[i];
Result r = new Result();
r.Value1 = arr[0];
r.Value2 = ClassLibrary1.Class1.Html2Txt(arr[1]);
ResultManager.AddResult(r);
}
}
5.常用的一些正则表达式
* 0-多个
? 0-1个
+ 1-多个
+? 尽可能少的匹配
*? 0次或多次,尽可能少
/w 等效于 [a-zA-Z_0-9]
/W 匹配非单词
/S 非空
/s 等效于 [ /f/n/r/t/v] 空格,制表 换页
. 匹配除了换行以为的任何字符
/d 数字
[^>] 除了>以为的字符
[/u4e00-/u9fa5] 汉字
6.代码只是实现了信息采集的主要功能,根据你自己的需要更换采集页面,跟合适的正则表达式后,可以根据你的需要自动进行采集,对采集到的数据,再根据你的需要自己进行处理。
7.数据库操作部分用的3层代码生成器连接地址 在 app.config中
如果你发现有什么不合理的,需要改进的地方,<span style="font-family: 'lucida Grande',Verdana; font-size: 14px; line-height: 23px;">邮件联系328452421@qq.com(qq常年不在线,邮件联系)</span>朱晓 。相互交流 谢谢
顺便问下 有家是新泰的没。
下载地址 http://download.csdn.net/source/3329838
<br>
发表评论
-
HD2刷机的基础知识 HD2的radio、HSPL、ROM三种组合
2012-02-07 15:13 1100今天看着教程刚刷了台HD2,觉得有用的文章顺便转载过来 ... -
Hadoop配置部分内容
2012-02-04 15:29 741[size=medium;]Hadoop配置部分内容[ ... -
[转载]JPA 批注参考(1)
2012-02-04 11:39 725作为 Java 企业版 5 ... -
JVM 内存结构(转)
2012-02-03 14:49 899http://www.4ucode.com/Study ... -
JSP,PHP,Python,Ruby,Perl概要及各自特点
2012-01-31 15:18 994互联网技术日新月异,编程的语言层出不穷,原本稍微平静了 ... -
不要再浪费时间
2012-01-31 15:08 910不要再浪费时间 &l ... -
<<让oracle跑的更快1>>读书笔记2
2012-01-11 13:24 10231 绑定变量 1 ... -
Groovy Sql使用Spring的事务管理
2011-12-28 18:43 1287Grails如果不想用Hibernate的东东,可以直 ... -
Crack JRebel 4.0,无需重启JVM,热部署解决方案
2011-12-28 18:28 1170http://dl.dropbox.com/u/229 ... -
Linux tar压缩时排除某个目录或文件的参数
2011-12-21 13:48 1303在对某个目录进行压缩的时候,有时候想排除掉某个目录,例 ... -
2011面试题目之猴子偷桃
2011-12-21 11:14 1508<span style="" ... -
Qt 4.7.4 完美动态编译发布动态调试,以及静态编译发布
2011-12-20 14:53 1602首先是准备工作 ... -
介绍一个ASP.NET开发工具Web Matrix
2011-12-19 09:49 966想学习或者开发个小型的ASP.NET程序,装个VS.N ... -
程序名称DreamIT(梦想IT)提供许多IT公司的面试和笔试试题
2011-12-19 09:24 916<font style="bac ... -
基于SVG的WebGIS的一个雏形
2011-12-14 13:19 679我和一位师弟,经过了很多天的努力,终于做出了一个简单的 ... -
在Android中自定义IOS风格的按钮
2011-12-12 10:09 1095<p class="MsoNorm ... -
HTML5网站
2011-12-12 08:55 808记得刚来现在公司的时候,老大就说,作为移动平台部门的员 ... -
将字节流(byte[])转换成文件
2011-12-09 08:25 1522/** * 将字节流转换成文件 * @par ... -
在SUSE 11中安装Windows虚拟机
2011-12-09 01:29 898Novell公司最近推出 ... -
firefox+Firebug调试JavaScript、HTML和CSS
2011-12-08 13:34 804什么是Firebug<br><br& ...
相关推荐
本项目以"C#实现网页信息采集"为主题,旨在教授如何使用C#编程语言来构建一个简单但实用的网页数据抓取工具。C#是微软开发的一种面向对象的编程语言,具有丰富的类库和强大的功能,非常适合进行网络编程。 首先,...
数据采集通常涉及网络爬虫技术,用于自动化地从互联网上抓取信息。C# 中实现数据采集可能使用到如HtmlAgilityPack库解析HTML,HttpClient类处理HTTP请求,以及Regex类进行正则表达式匹配等技术。此外,为了实现智能...
在数据采集工具中,线程池可以灵活调度任务,避免因频繁创建和销毁线程而导致的性能下降。 4. 数据采集:数据采集是指从网络或本地源获取信息的过程,通常涉及HTTP请求、HTML解析、JSON或XML处理等。在这个工具中,...
在IT领域,数据采集是一项重要...通过上述知识点的学习和实践,你将能够利用C#开发出功能完善的网页数据采集工具,有效提取和处理互联网上的大量信息。记得在实际操作中不断优化和调整策略,以适应不断变化的网络环境。
C#是一种广泛用于开发桌面应用、Web应用以及服务器端程序的强大编程语言,它也提供了丰富的库和工具来支持数据采集工作。在这个"C#数据采集例子"中,我们将探讨如何利用C#进行数据采集,同时也会关注正则表达式在...
总的来说,C#提供了强大的工具和库,使我们能够轻松构建上位机应用,实时接收和显示温湿度传感器数据,同时实现简单的报警功能。通过理解串口通信、用户界面设计和事件处理,开发者可以快速构建出满足需求的应用程序...
在C#编程语言中,我们可以利用其强大的.NET Framework来实现与这些硬件设备的交互,进行数据的读取和写入操作。本实例源码着重展示了如何在C#环境下,通过编程方式与硬件数据采集器进行有效通信。 首先,理解C#中的...
在这个场景下,我们关注的是如何使用C#这种高级编程语言来实现摄像头图像的采集。C#提供了丰富的库和API,使得开发者可以方便地访问和操作硬件资源,如摄像头。本文将深入探讨C#调用API进行摄像头图像采集的相关知识...
综上所述,这个C#实现的文章自动采集系统提供了灵活的配置选项和易用性,是数据采集任务的有力工具。通过学习和理解其工作原理,开发者不仅可以提升自身在C#编程和网络爬虫领域的技能,还能为日常的数据处理工作带来...
本资料包“多线程数据采集器源码(C#+2[1].0)+v1”正是基于C#构建的一款高效数据采集工具,旨在帮助开发者更好地理解和应用多线程技术于数据采集领域。 1. **C#基础知识**:C#是一种面向对象的、类型安全的编程语言...
本篇将深入探讨如何利用C#和VS2008进行数据采集,特别是针对天气预报信息以及通过Web Service接口的数据采集。 首先,让我们了解C#的基础知识。C#是由微软公司设计的一种面向对象的编程语言,它具有类型安全、垃圾...
《C#实现的局域网聊天工具:整合文字、语音、视频及远程协助功能》 在信息技术日益发达的今天,即时通讯工具已经成为我们日常生活和工作中不可或缺的一部分。而在局域网环境中,开发一款无需服务器,即可实现文字...
【C#采集器】是一种基于C#编程语言开发的数据采集工具,主要功能是抓取互联网上的各种网页内容,实现信息的自动化收集与处理。在给定的文件列表中,我们可以看到一些关键的文件,这些文件构成了一个简单的C# Web应用...
总的来说,这个C#项目展示了如何结合`webBrowser`控件和正则表达式技术来实现网络数据的自动化采集,以及如何对实时更新的数据进行处理和保存。对于学习Web爬虫、数据采集和C#编程的开发者来说,这是一个很好的实践...
本项目“C# Modbus TCP/IP数据采集程序”旨在利用C#编程语言实现对支持Modbus TCP/IP协议设备的数据采集功能。 首先,我们要了解C#语言。C#是由微软开发的一种面向对象的编程语言,它具有丰富的类库,支持.NET框架...
本资源涉及的是C#实现的网络数据采集(Web Scraping)的核心源码,这是许多数据分析、信息抓取和自动化任务的关键技术。下面将详细讲解C#采集核心源码及其相关知识点。 一、C#基础 C#是一种面向对象的编程语言,由...
描述中提到的"是一款温度采集上位机程序源码,可作为开发人员的案例"表明这个程序不仅是一个实用工具,还具有教学和参考价值。对于开发者而言,特别是那些正在学习C#或物联网(IoT)应用的开发者,可以研究源代码来...
总体而言,这个新闻采集器项目展示了如何结合C#、WinForm、正则表达式和XML技术,构建一个实用的工具,实现自动化地抓取、解析网络新闻并进行本地存储。这对于那些希望实时跟踪特定网站新闻或者进行大规模数据收集的...
在本文中,我们将深入探讨如何使用C#编程语言来实现研华(Advantech)DAQ(数据采集与控制)系统的大部分功能。研华DAQ设备广泛应用于各种自动化和测量应用,提供丰富的硬件接口,如数字输入/输出(DIO)、模拟输入/...