.NET采集数据,放入数据库总结
第一次做采集Json的还简单一些但是XML的简直了.........
JSON
1 //采集数据 2 public string GetBetRecordToRepository()//随便你返回什么 3 { 4 try 5 { 6 DateTime startTime = DateTime.Now; 7 var Date = startTime; //日期中的时间段 8 string playDate = Date.ToString("yyyy-MM-ddTHH:mm:ss");//开始时间,设置时间格式 9 Date = Date.AddMinutes(-15);//时间间隔,有什么比限制15分钟采集一次,调试的时候返回空更丧的呢!! 10 string endDate = Date.ToString("yyyy-MM-ddTHH:mm:ss");//结束时间 11 int k = 0;//因为我是15分钟采集,所以设置变量确定时间 12 for (int j = 0; j < Time;)//Time是采集时间比如为48,那就是采集当前时间到昨天的当前时间 13 { 14 k += 1; 15 if (k == 4)//一小时 16 { 17 j += 1; 18 k = 0; 19 } 20 23 // //日期 24 // var Date = DateTime.Now.AddHours(Time); //打注释的是另一种方法使用do{}while()循环,注意我在写这个的时候为了区分所以do是从当前时间往回采集所以使用do应改为-15 25 //var NowDate = DateTime.Now; 26 ////日期中的时间段 27 //string playDate = Date.ToString("yyyy-MM-ddTHH:mm:ss");//开始时间 28 //Date = Date.AddMinutes(15); 29 //string endDate = Date.ToString("yyyy-MM-ddTHH:mm:ss");//结束时间 30 //do 31 //{ 32 //设置路径获取值 33 string PostUrl = "采集路径"; 34 string JsonStr = "采集参数"; 35 string retData = string.Empty; 36 retData = UtilsHelper.HttpWebRequest(PostUrl, JsonStr, Encoding.UTF8, contentType: "application/json", method: "POST");//请求服务器,详细请看我另一篇(.NET接入接口) 37 //判断返回值是否为空 38 if (retData != "[]")//判断根据自己的判断
39 { 40 //实例化表 41 42 string Sql = string.Empty; 43 string St = retData.ToString(); 44 var C = from c in St 45 where 46 c == '}' 47 select c; 48 int Count = C.Count();//获取返回Json个数 49 string S = retData; 50 int index1, index2;//记录Json开始和结束位置 51 string Str; 52 //循环取值 53 for (int i = 0; i < Count; i++) 54 { 55 index1 = S.IndexOf("{"); 56 index2 = S.IndexOf("}"); 57 Str = S.Substring(index1, index2 - i); 58 S = S.Replace(Str, ""); 59 JObject jo = (JObject)JsonConvert.DeserializeObject(Str);//将返回的字符串转换为Jaon格式 60 Table Bmodel = new Table();//实例化一个表 Bmodel.id=Convert.toInt32(jo["id"].tostring()); 62 Bmodel.username = jo["name"].ToString(); ............................................ 93 //生成SQl语句,查看是否已经有该数据 94 Sql = "select count(*) from Table where ID='" + Bmodel.id + "'"; 95 if (Convert.ToInt32(DbHelperSQL.GetSingle(Sql)) == 0) 96 { 97 Sql = "INSERT INTO Table(ID,username,....." + 99 "VALUES("+Bmodel.id+",'"+Bmodel.username+"',......)";//注意将值的类型与数据库对应 104 } 105 else 106 { 107 Sql = "UPDATE AGBetOrder SET username='" + Bmodel.username + "',...... where ID=" + Bmodel.id ; 108 }110 //执行SQl语句 111 DbHelperSQL.ExecuteSql(Sql); 112 } 113 } 114 //重新获取日期中的下一个时间段 115 playDate = Date.ToString("yyyy-MM-ddTHH:mm:ss");//开始时间 116 Date = Date.AddMinutes(-15); 117 endDate = Date.ToString("yyyy-MM-ddTHH:mm:ss");//结束时间 118 119 //} while (Date < NowDate); 120 //return MSMPRetMsgFactory.SucceedMsg(); 121 } 122 } 123 catch (Exception ex) 124 { 125 LogHelper.WriteErrorLog(ex);//抓取错误 126 return "NO"; 127 } 128 return "OK"; 129 }
XML 1 public string GetBetRecordToRepository 2 { 3 try
4 { 5 DateTime startTime = DateTime.Now;//当前时间 6 for (int i = 0; i < Time; i += 4)//时间段 7 { 8 startTime = startTime.AddHours(-4); 9 DateTime endTime = startTime.AddHours(4); 10 11 string url = "采集地址"; 12 string retData = UtilsHelper.HttpWebRequest(url, null, Encoding.UTF8); XmlDocument a = new XmlDocument(); 23 a.LoadXml(retData); 24 XmlNode inputNode; 25 string SQL_base; 26 string Str = retData; 27 string r = Str.Replace("normal_wager_", ""); 28 int count = ((Str.Length - r.Length) / 13) / 2; 29 30 if (retData.IndexOf("success") > 0) 31 { 32 //创建一个实体类 33 STable Smodel = new STable(); 34 //创建一个XmlDocument类型数据 35 XmlDocument XmlD = new XmlDocument(); 36 XmlD.LoadXml(retData); 37 inputNode = XmlD.SelectSingleNode("success"); 38 //获取节点,将节点转换为元素,便于得到节点的属性值 39 XmlNodeList XnA = inputNode.ChildNodes;//1 40 XmlNodeList XnB = XnA.Item(1).ChildNodes; 41 //取值放入实体类 42 Smodel.request_tid = Convert.ToInt32(XnB.Item(0).InnerText);//搜索起点 43 Smodel.latest_tid = XnB.Item(1).InnerText;//搜索起点 44 //获取节点,将节点转换为元素,便于得到节点的属性值 46 XnB = XnA.Item(4).ChildNodes; 47 XmlNodeList XnC = XnB.Item(0).ChildNodes;//3.1 48 //取值放入实体类 49 Smodel.normal_parlay = XnC.Item(0).InnerText;//普通注单/过关注单 50 for (int j = 1; j <= count; j++) 51 { 52 XnB = XnA.Item(2).ChildNodes; 53 //取值放入实体类 54 Smodel.total_wager = Convert.ToInt32(XnB.Item(1).InnerText) + j - 1;//注单总数 55 56 //创建一个实体类 57 STable Smodel2 = new STable(); 58 59 //获取节点,将节点转换为元素,便于得到节点的属性值 60 XmlNodeList XnD = XnC.Item(j).ChildNodes;//3.2 61 //取值放入实体类 62 Smodel2.play_type = XnD.Item(0).InnerText;//游戏编号 .......................................................101 //生成Sql语句 102 SQL_base = "SELECT COUNT(*) from STable WHERE transactionid='" + Smodel2.transactionid + "'";//查询是否已经有这一条记录 103 if (Convert.ToInt32(DbHelperSQL.GetSingle(SQL_base)) == 1) 104 SQL_base = "UPDATE STable set request_tid=" + Smodel.request_tid + ",............."; 105 else 106 SQL_base = "insert into STable(................)VALUES(............)";108 //执行SQl语句 109 DbHelperSQL.ExecuteSql(SQL_base); 110 } 111 } 112 } 113 } 114 catch (Exception err) 115 { 116 LogHelper.WriteErrorLog(err); 117 } 118 return MSMPRetMsgFactory.SucceedMsg(); 119 }
PS:Json呢是直接就键值对取值,XML呢要一层一层的分开取值,绕得晕乎乎的,小菜一只,请多多指教
转载于:https://www.cnblogs.com/ZxtIsCnblogs/p/7683290.html
.NET采集数据,放入数据库总结相关推荐
- python的scrapy爬虫可以将爬去的数据放入数据库吗_Python基于Scrapy的爬虫 数据采集(写入数据库)...
上一节已经学了如何在spider里面对网页源码进行数据过滤. 这一节将继续学习scrapy的另一个组件-pipeline,用来2次处理数据 (本节中将以储存到mysql数据库为例子) 虽然scrapy ...
- 怎样把Image数据放入数据库
用image类型 方法: 1.建立过程 CREATE PROCEDURE sp_textcopy ( @srvname varchar (30), ...
- SpringBoot将数据放入Excel里面通过浏览器直接下载到本地
SpringBoot将数据放入Excel里面通过浏览器直接下载到本地 说明 依赖 代码 效果 说明 以前做java方面的导出下载的时候,都是先把数据导出到linux服务器里面的某个目录,然后才是通过浏 ...
- php批量上传图片并带参数,php批量上传图片并把图片名放入数据库
前几天工作中要做这样一个功能,有八百多个系统 生成的会员:给这八百多个系统会员上传图片:然后把图片名放入数据库. 第一步: 第一步肯定是首先把图片上传到对应的图片目录下,直接用框架中已经有的上传类: ...
- flink 处理迟到数据(Trigger、设置水位线延迟时间、允许窗口处理迟到数据、将迟到数据放入侧输出流、代码示例、迟到数据触发窗口计算重复结果处理)
文章目录 前言 1.Trigger 2.处理迟到数据 2.1 设置水位线延迟时间 2.2 允许窗口处理迟到数据 2.3 将迟到数据放入侧输出流 3.实操 3.1 代码示例 3.2 中间遇到的异常 3. ...
- domino中实现将本地文件放入数据库中的LS代码
domino中实现将本地文件放入数据库中的LS代码 Sub InitializeDim session As New NotesSessionDim db As NotesDatabaseDim do ...
- python爬取豆瓣电影top250_利用python爬取豆瓣电影Top250,并把数据放入MySQL数据库...
在学习了python基础后,一心想着快速入门爬虫,因为我就是为爬虫而学的python,所以就找了这个豆瓣电影来爬取.好了,废话不多说,进入正题 1.找到网页并分析网页结构 首先进入豆瓣电影Top250 ...
- vc++64位系统下long的长度为4个字节_新来的妹子把几百万数据放入了内存,系统立马爆了...
点击上方蓝色字体,选择"标星公众号" 优质文章,第一时间送达 上一篇:这300G的Java资料是我师傅当年给我的,免费分享给大家 下一篇:这200G的Java实战资料是我师傅当年教 ...
- 新来的妹子把几百万数据放入了内存,系统立马爆了
点击上方蓝色字体,选择"标星公众号" 优质文章,第一时间送达 上一篇:这300G的Java资料是我师傅当年给我的,免费分享给大家 下一篇:这200G的Java实战资料是我师傅当年教 ...
最新文章
- ffmpeg-win32-v3.2.4 下载_iTools下载|iTools 4.4.3.4 官方中文版
- 【电商】几种电商模式及特点
- 记一次Spring boot 和Vue的前后端分离的入门培训
- 实验四 栈和队列的基本操作
- ajax传输json数据格式乱码_解决Ajax加载JSon数据中文乱码问题
- 控件UI性能调优 -- SizeChanged不是万能的
- as cast float server sql_SQL语言在数据工程(Data Engineering)中的运用(一)
- JavaScript基础知识。
- python sklearn做文本分类
- 深入研究ActivityMQ
- matlab三维网格绘图函数mesh、meshc、mesh、zmeshgrid、surf【matlab图行绘制五】
- 计算机网络基本知识(二):网络拓扑结构
- 计算机十六进制是什么意思,2进制和16进制是什么意思?它们之间如何换算?
- [深度学习基础] 斯坦福CS231n李飞飞计算机视觉Lecture 6笔记
- mac 安装typescript
- 魔兽私服Trinitycore架构设计分析之一
- linux java 缓存服务器,linux服务器缓存环境memcached筹建及应用(java)
- Vue.filter过滤器存储单位换算按B、KB 、M、 G显示字节大小
- Flowable入门系列文章47 - 电子邮件任务
- 开源库实现SwitchButton开关按钮
热门文章
- 带你自学Python系列(十三):Python函数的用法(三)
- 《Python编程从入门到实践》第9章类动手试一试答案(附代码)
- jav中什么是组织java程序_Java程序的执行过程中用到一套JDK工具,其中javaprof.exe是指()。A.Java调试器B.Java剖析工具C.Jav...
- 数据结构期末复习之排序
- IAI OpenLab工业人工智能开放实验室白皮书(一)
- ReedShepp与Dubins path的matlab实现
- python正则表达式数字开头_Python正则表达式总结
- Macbook Pro笔记本双系统MacOS和Windows切换默认启动
- jQuery按钮隐藏与显示
- selenium元素定位之 动态id, class元素定位