Foxtable(狐表)用户栏目专家坐堂 → 网页表格数据保存到狐表表中


  共有3325人关注过本帖树形打印复制链接

主题:网页表格数据保存到狐表表中

帅哥哟,离线,有人找我吗?
sloyy
  1楼 | QQ | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:九尾狐 帖子:2193 积分:13908 威望:0 精华:2 注册:2012/2/25 10:59:00
网页表格数据保存到狐表表中  发帖心情 Post By:2015/2/4 23:33:00 [只看该作者]

我有一个网页,想把里面的最高温度,最低温度读取到狐表里,该如何写代码?
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:网页表格温度保存到狐表.table


 回到顶部
帅哥哟,离线,有人找我吗?
Bin
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:贵宾 帖子:35433 积分:178524 威望:0 精华:3 注册:2013/3/30 16:36:00
  发帖心情 Post By:2015/2/5 8:40:00 [只看该作者]

.
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:网页表格温度保存到狐表.table


 回到顶部
帅哥哟,离线,有人找我吗?
sloyy
  3楼 | QQ | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:九尾狐 帖子:2193 积分:13908 威望:0 精华:2 注册:2012/2/25 10:59:00
  发帖心情 Post By:2015/2/6 20:33:00 [只看该作者]

谢谢 BIN  ,非常完美的代码,有些我没想到的字符处理,你都帮我想到了,太感谢了!

在测试过程中我发现一个问题:温度记录是每天增加一行的,我希望点下载数据时,能只增加新增的温度记录,保留旧的记录;
这个判断语句要怎么加? 

 回到顶部
帅哥哟,离线,有人找我吗?
Bin
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:贵宾 帖子:35433 积分:178524 威望:0 精华:3 注册:2013/3/30 16:36:00
  发帖心情 Post By:2015/2/7 8:52:00 [只看该作者]

很简单的FIND一下有无重复记录即可. http://www.foxtable.com/help/topics/0396.htm

参考帮助的合并数据例子,里面就用运用到http://www.foxtable.com/help/topics/2334.htm

四个尾巴了,应该掌握一些基本的知识才对.

 回到顶部
帅哥哟,离线,有人找我吗?
sloyy
  5楼 | QQ | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:九尾狐 帖子:2193 积分:13908 威望:0 精华:2 注册:2012/2/25 10:59:00
  发帖心情 Post By:2015/2/7 16:38:00 [只看该作者]

我用的就是FIND语句,结果增加了一堆的空白行,主要原因是源代码结构性的问题:先增加的行,再取的数,这样就很难处理了,我现在采用了一个迂回的办法:增加一个表放历史数据,把当前从网页取下来的数据用选择性填充的办法填到历史数据里。 

 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2015/2/8 9:12:00 [只看该作者]

Dim web As System.Windows.Forms.WebBrowser = e.Form.Controls("WebBrowser1").basecontrol
'web.Navigate("http://www.tianqihoubao.com/weather/top/liuzhou.html")
'Do Until web.ReadyState = 4
'Application.DoEvents
'Loop
'
'
'取数据
Dim Cols() As String = { "日期","最高温度","最低温度" }

Dim elems As object = web.Document.GetElementById("content").GetElementsByTagName("tr")
Dim m As Integer = -1
For Each elem As object In elems
    Dim i As Integer = -1
    Dim r As DataRow
    m = m + 1
    Dim tdelems As object =  elem.GetElementsByTagName("td")
    If m > 1 Then  '因为网页的表格有标题,如果不判断,就会增加出一个空行
        Dim d As Date = IIF(tdelems(1).Innertext.Contains("星期"),tdelems(1).Innertext.Substring(0,10),tdelems(1).Innertext)
        Dim fdr As DataRow = DataTables("历史温度").Find("日期 = #" & d & "#")
        If fdr Is Nothing Then
            r = DataTables("历史温度").AddNew
        Else
            r = fdr
        End If
    End If
   
   
    For Each tdelem As object In tdelems
        i = i + 1
        If r IsNot Nothing Then
            Select Case i
                Case 1
                    r("日期") = IIF(tdelem.Innertext.Contains("星期"),tdelem.Innertext.Substring(0,10),tdelem.Innertext)
                Case 4
                    r("最高温度") = tdelem.Innertext.trim("℃")
                Case 7
                    r("最低温度") = tdelem.Innertext.trim("℃")
            End Select
        End If
    Next
Next
Tables("历史温度").save


 回到顶部
帅哥哟,离线,有人找我吗?
sloyy
  7楼 | QQ | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:九尾狐 帖子:2193 积分:13908 威望:0 精华:2 注册:2012/2/25 10:59:00
  发帖心情 Post By:2015/2/9 22:54:00 [只看该作者]

非常棒的代码!谢谢 bin 有点甜

 回到顶部