c#数据采集

这段时间采集一些网络资源,考虑到采集源的防采集屏蔽,于是火车头采集器也排不上用场了,只能自己写一个,部分代码如下:

 

Code
private void gotoRes()
        {
            
int num = 0;
            
int dnum = 0;
            
string strMsg = "执行数据如下:\r\n\r\n";
            DataTable dt 
= Business.Business.GetUrlTable(Convert.ToInt32(starid.Text), Convert.ToInt32(endid.Text));
            
for (int i = 0; i < dt.Rows.Count; i++)  
            {
                
if (Convert.ToInt32(dt.Rows[i]["tagid"]) == 0)
                {
                    
string strPath = "d:\\res\\";
                    
string strFilePath = "";
                    
if (dt.Rows[i]["resourceTitle"].ToString().Length > 10)
                    {
                        
string[] resourceUrl = SplitString(dt.Rows[i]["resourceUrl"].ToString().ToLower(), "/");
                        
for (int length = 5; length < resourceUrl.Length; length++)
                        {
                            strMsg 
+= dt.Rows[i]["rid"].ToString() + dt.Rows[i]["resourceTitle"].ToString() + dt.Rows[i]["resourceUrl"].ToString() + "\r\n";
                            strPath 
+= resourceUrl[length - 1];
                            strFilePath 
+= strPath + "\\" + resourceUrl[length];
                        }
                    }

                    
if (!Directory.Exists(strPath))
                    {
                        Directory.CreateDirectory(strPath);
                    }

                    
if (downfile2(dt.Rows[i]["resourceUrl"].ToString(), strFilePath))
                    {
                        
if (Business.Business.UpDateRes(Convert.ToInt32(dt.Rows[i]["rid"])))
                        {
                            strMsg 
+= strFilePath + "下载完毕!\r\n";
                            dnum
++;
                        }
                    }
                    num
++;
                }
                msg.Text 
= strMsg + "\r\n共载入" + num.ToString() + "条数据!下载数据:" + dnum.ToString() + "";
            }
        }


public bool downfile2(string url, string LocalPath)
        {
            
try
            {
                Uri u 
= new Uri(url);
                HttpWebRequest mRequest 
= (HttpWebRequest)WebRequest.Create(u);
                mRequest.Method 
= "GET";
                mRequest.ContentType 
= "application/x-www-form-urlencoded";
                HttpWebResponse wr 
= (HttpWebResponse)mRequest.GetResponse();
                statusBar1.Text 
= "开始下载文件";

                Stream sIn 
= wr.GetResponseStream();

                FileStream fs 
= new FileStream(LocalPath, FileMode.Create, FileAccess.Write);
                statusBar1.Text 
= "error!";
                
long length = wr.ContentLength;
                
int i = 0;
                
long j = 0;
                statusBar1.Text 
= "正在接收数据";
                
byte[] buffer = new byte[1024];
                
while ((i = sIn.Read(buffer, 0, buffer.Length)) > 0)
                {
                    j 
+= i;
                    fs.Write(buffer, 
0, i);
                    statusBar1.Text 
= "文件大小:" + length.ToString() + "字节   当前下载:" + j + "字节";
                }

                sIn.Close();
                wr.Close();
                statusBar1.Text 
= "文件下载完毕文件大小" + fs.Length.ToString() + "字节";
                Console.WriteLine(
"文件下载完毕文件大小" + fs.Length.ToString() + "字节." + System.DateTime.Now.ToString());
                fs.Close();
                
return true;
            }
            
catch { return false; }
        }

 

转载于:https://www.cnblogs.com/kantorgong/archive/2008/11/14/1333594.html

Soukey采摘网站数据采集软件是一款基于.Net平台的开源软件,也是网站数据采集软件类型中唯一一款开源软件。尽管Soukey采摘开源,但并不会影响软件功能的提供,甚至要比一些商用软件的功能还要丰富。Soukey采摘当前提供的主要功能如下: 1. 多任务多线程数据采集,支持POST方式; 2. 可采集Ajax页面; 3. 支持Cookie,支持手工登录采集数据; 4. 支持采集事务; 5. 支持数据自动及手工导出,导出格式为:文本、Excel、Access、MSSql、Mysql等; 6. 支持在线发布数据; 7. 支持导航网址的采集,导航深度不限; 8. 支持自动翻页; 9. 支持文件下载,可以采集图片、Flash及其他文件; 10. 支持采集结果数据的加工,包括替换、附前缀后缀、截取等操作,支持正则; 11. 采集网址定义不仅支持基本参数定义,也可外接字典数据作为网址参数,进行数据采集; 12. 支持一个任务多实例运行; 13. 提供计划任务,计划任务支持Soukey采集任务、外部可执行文件任务、数据库存储过程任务; 14. 计划任务执行周期支持每天、每周及自定义运行间隔;最小单位为:半小时; 15. 支持任务触发器,即可在采集任务完成后,自动触发执行其他任务(包括可执行文件或存储过程)。 16. 完善的日志功能:系统日志、任务执行日志、出错日志等等; 17. 系统提供MINI浏览器可用于捕获Cookie或POST数据; Soukey采摘并不限制您是否商用此软件,源码完全开放,
预览图片见:http://www.cnblogs.com/xxpyeippx/archive/2008/03/31/1131211.html运行环境windows nt/xp/2003 or above.net Framework 1.1SqlServer 2000 开发环境 VS 2003目的学习了网络编程,总要做点什么东西才好。于是想到要做一个网页内容采集器。作者主页: http://www.fltek.com.cn使用方式测试数据采用自cnBlog。见下图用户首先填写“起始网页”,即从哪一页开始采集。然后填写数据库连接字符串,这里是定义了采集到的数据插入到哪个数据库,后面选择表名,不必说了。网页编码,不出意外的话,中国大陆都可以采用UTF-8爬取文件名的正则:呵呵 这个工具明显是给编程人员用的。正则都要直接填写啦。比如说cnblogs的都是数字的,所以写了\d建表帮助:用户指定要建立几个varchar型的,几个text型的,主要是放短数据和长数据啊。如果你的表里本来就有列,那就免啦。程序里面没有做验证哦。网页设置里面:采集内容前后标记:比如说都有 xxx,如果我要采集xxx就写“到”,意思,当然就是到之间的内容啦。后面的几个文本框是显示内容的。点击“获取URL”可以查看它捕获的Url对不对的。点击“采集”,可以把采集内容放到数据库,然后就用 Insert xx () (select xx) 可以直接插入目标数据了。程序代码量非常小(也非常简陋),需要的改动一下啦。不足 应用到了正则表达式、网络编程由于是最简单的东西,所以没有用多线程,没有用其他的优化方法,不支持分页。测试了一下,获取38条数据,用了700M内存啊。。。。如果有用的人 ,可以改一下使用啦。方便程序员用,免写很多代码。Surance Yin@ Surance Center 转载请注明出处
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值