正则抓取网页table并把获取的数据存入数据库

qqZccc 2013-03-14 02:46:10


//创建datatable
DataTable dt = new DataTable();
dt.Columns.Add("SeaNum", typeof(int));//海区编号
dt.Columns.Add("SeaName", typeof(string));//海区名称
dt.Columns.Add("WaveHeight", typeof(string));//浪高
dt.Columns.Add("BayHigh", typeof(string));//涌高

dt.Columns.Add("SST", typeof(int));//海温
dt.Columns.Add("AverMaxflowrate", typeof(string));//平均流速/最大流速
dt.Columns.Add("Averflowflowof", typeof(string));//平均流向/最大流向
dt.Columns.Add("Time", typeof(string));//时间

dt.TableName = "jhhyyb";
//Url = "http://www.nmefc.gov.cn/nr/jhhyhjyb.aspx";
string html = GetWebContent1("http://www.nmefc.gov.cn/nr/jhhyhjyb.aspx");
string pattern = @"(?is)<table[^>]*?bgcolor=""#CCCCCC""[^>]*?>.*?</table>";
html = Regex.Match(html,pattern).Value;

foreach(Match m in Regex.Matches(html,@"(?<=<td[^>]+>).*?(?=</td>)"))
{

//Response.Write(m.Value);

}
这里已经获取到网页table的数据了 怎么循环截取把获取到的数据存到数据库里
...全文
271 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
qqZccc 2013-03-14
  • 打赏
  • 举报
回复
引用 12 楼 Chinajiyong 的回复:
引用 11 楼 qqZccc 的回复:引用 10 楼 Chinajiyong 的回复:引用 9 楼 qqZccc 的回复:引用 8 楼 Chinajiyong 的回复:引用 7 楼 Chinajiyong 的回复:这个方法怎么写的
LoadDataSet

这个操作数据库 是调用的企业类库 private static Database db = DatabaseF……


你看看这个table的结构 第一个tr里的td是数据库的字段名, 然后有办法把第二个时间给去除掉 再把数据依次插入数据库吗?
EnForGrass 2013-03-14
  • 打赏
  • 举报
回复
引用 11 楼 qqZccc 的回复:
引用 10 楼 Chinajiyong 的回复:引用 9 楼 qqZccc 的回复:引用 8 楼 Chinajiyong 的回复:引用 7 楼 Chinajiyong 的回复:这个方法怎么写的 LoadDataSet 这个操作数据库 是调用的企业类库 private static Database db = DatabaseFactory.CreateDataba……
你看你匹配的数据是不是和你数据库字段相符合啊 list[0]是不是要放到c1字段里???
qqZccc 2013-03-14
  • 打赏
  • 举报
回复
引用 10 楼 Chinajiyong 的回复:
引用 9 楼 qqZccc 的回复:引用 8 楼 Chinajiyong 的回复:引用 7 楼 Chinajiyong 的回复:这个方法怎么写的 LoadDataSet 这个操作数据库 是调用的企业类库 private static Database db = DatabaseFactory.CreateDatabase("DBconnStr"); 插入就直接执……
这个操作数据库的我会,就是上面获取到的table的数据 你说赋给list我不知道对不对
EnForGrass 2013-03-14
  • 打赏
  • 举报
回复
引用 9 楼 qqZccc 的回复:
引用 8 楼 Chinajiyong 的回复:引用 7 楼 Chinajiyong 的回复:这个方法怎么写的 LoadDataSet 这个操作数据库 是调用的企业类库 private static Database db = DatabaseFactory.CreateDatabase("DBconnStr");
插入就直接执行NonExceuteQuery()方法就行了啊
qqZccc 2013-03-14
  • 打赏
  • 举报
回复
引用 8 楼 Chinajiyong 的回复:
引用 7 楼 Chinajiyong 的回复:这个方法怎么写的 LoadDataSet
这个操作数据库 是调用的企业类库 private static Database db = DatabaseFactory.CreateDatabase("DBconnStr");
EnForGrass 2013-03-14
  • 打赏
  • 举报
回复
引用 7 楼 Chinajiyong 的回复:
这个方法怎么写的
LoadDataSet
EnForGrass 2013-03-14
  • 打赏
  • 举报
回复
这个方法怎么写的
qqZccc 2013-03-14
  • 打赏
  • 举报
回复
引用 5 楼 Chinajiyong 的回复:
引用 4 楼 nice_fish 的回复:引用 3 楼 qqZccc 的回复:引用 2 楼 Chinajiyong 的回复:你可以把匹配到的数据放到list中,然后再插入数据库 string html="yourhtml"; foreach(Match m in Regex.Matches(html,@"(?<=<td[^>]+>).*?(?=</td>)")) {……
List<string> ll = new List<string>(); foreach(Match m in Regex.Matches(html,@"(?<=<td[^>]+>).*?(?=</td>)")) { Count++; Response.Write(m.Value); ll.Add(m.Value); //// Label1.Text = m.Value; } DataSet ds = new DataSet(); string sql = @"insert into [Weather].[dbo].[jhhyyb24](SeaName,WaveHeight,BayHigh,SST,AverMaxflowrate,Averflowflowof,Time) values('" + ll[0] + "','" + ll[1] + "','" + ll[2] + "','" + ll[3] + "','" + ll[4] + "','" + ll[5] + "','" + ll[6] + "') "; db.LoadDataSet(CommandType.Text, sql, ds, new string[] { "T" }); 我是这样写的 不对,他是把表头入到数据库了
EnForGrass 2013-03-14
  • 打赏
  • 举报
回复
引用 4 楼 nice_fish 的回复:
引用 3 楼 qqZccc 的回复:引用 2 楼 Chinajiyong 的回复:你可以把匹配到的数据放到list中,然后再插入数据库 string html="yourhtml"; foreach(Match m in Regex.Matches(html,@"(?<=<td[^>]+>).*?(?=</td>)")) { list.Add(m.Value……
你怎么写的???
  • 打赏
  • 举报
回复
引用 3 楼 qqZccc 的回复:
引用 2 楼 Chinajiyong 的回复:你可以把匹配到的数据放到list中,然后再插入数据库 string html="yourhtml"; foreach(Match m in Regex.Matches(html,@"(?<=<td[^>]+>).*?(?=</td>)")) { list.Add(m.Value); } insert into……
怎么不行?报错?信息不全?
qqZccc 2013-03-14
  • 打赏
  • 举报
回复
引用 2 楼 Chinajiyong 的回复:
你可以把匹配到的数据放到list中,然后再插入数据库 string html="yourhtml"; foreach(Match m in Regex.Matches(html,@"(?<=<td[^>]+>).*?(?=</td>)")) { list.Add(m.Value); } insert into table(c1,c2,....) valu……
我试了试这样好像不行
EnForGrass 2013-03-14
  • 打赏
  • 举报
回复
你可以把匹配到的数据放到list中,然后再插入数据库 string html="yourhtml"; foreach(Match m in Regex.Matches(html,@"(?<=<td[^>]+>).*?(?=</td>)")) { list.Add(m.Value); } insert into table(c1,c2,....) values(list[0],list[1],......)//c1,c2你的列名
  • 打赏
  • 举报
回复
insert into 数据库表

111,126

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Creator Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧