以文本方式查看主题

-  Foxtable(狐表)  (http://www.foxtable.com/bbs/index.asp)
--  专家坐堂  (http://www.foxtable.com/bbs/list.asp?boardid=2)
----  网页表格数据保存到狐表表中  (http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&id=64102)

--  作者:sloyy
--  发布时间:2015/2/4 23:33:00
--  网页表格数据保存到狐表表中
我有一个网页,想把里面的最高温度,最低温度读取到狐表里,该如何写代码?
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:网页表格温度保存到狐表.table


--  作者:Bin
--  发布时间:2015/2/5 8:40:00
--  
.
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:网页表格温度保存到狐表.table


--  作者:sloyy
--  发布时间:2015/2/6 20:33:00
--  
谢谢 BIN  ,非常完美的代码,有些我没想到的字符处理,你都帮我想到了,太感谢了!

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

--  作者:Bin
--  发布时间:2015/2/7 8:52:00
--  
很简单的FIND一下有无重复记录即可. http://www.foxtable.com/help/topics/0396.htm

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

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

--  作者:sloyy
--  发布时间:2015/2/7 16:38:00
--  
我用的就是FIND语句,结果增加了一堆的空白行,主要原因是源代码结构性的问题:先增加的行,再取的数,这样就很难处理了,我现在采用了一个迂回的办法:增加一个表放历史数据,把当前从网页取下来的数据用选择性填充的办法填到历史数据里。 
--  作者:有点甜
--  发布时间: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
--  发布时间:2015/2/9 22:54:00
--  
非常棒的代码!谢谢 bin 有点甜