以文本方式查看主题

-  Foxtable(狐表)  (http://www.foxtable.com/bbs/index.asp)
--  专家坐堂  (http://www.foxtable.com/bbs/list.asp?boardid=2)
----  【已解决】(获取网页表格内容保存狐表、获取字符串组内指定位置的字符串)[求助]我想获取表格内容到狐表表A内,怎么写?  (http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&id=132349)

--  作者:zto001
--  发布时间:2019/3/20 12:34:00
--  【已解决】(获取网页表格内容保存狐表、获取字符串组内指定位置的字符串)[求助]我想获取表格内容到狐表表A内,怎么写?

[求助]我想获取表格内容到狐表表A内,怎么写?

这代码没看懂。

 

Dim web As System.Windows.Forms.WebBrowser = e.form.controls("webbrowser1").Basecontrol
Dim elems As object = web.Document.GetElementsByTagName("div")
Dim ls As new List(of String)
For Each elem As object In elems
    If elem.getattribute("classname") = "cell" Then
        ls.add(elem.innerText)
    End If
Next

msgbox(ls.count)
If ls.count >= 10 Then
    
    Dim dr As Row = Tables("表A").AddNew()
    dr("第一列")=ls(0)
    dr("第二列")=ls(1)
    dr("第三列")=ls(2)
    dr("第四列")=ls(3)
End If

 

网页如下:



此主题相关图片如下:获取.jpg
按此在新窗口浏览图片

 

<div class="z_table">

<table>

<thead>

<tr>

<th width="140">订单编号</th><th width="112">订单时间</th><th width="120">发件人(电话)</th><th width="10%">发件人地址</th><th width="10%">收件人(电话)</th><th width="10%">收件人地址</th><th width="undefined">揽件人</th><th width="undefined">收件网点</th><th width="undefined">订单来源</th><th width="undefined">详细来源</th><th width="undefined">大头笔</th><th width="undefined">二段码</th><th width="undefined">三段码</th><th width="undefined">集包地</th><th width="undefined">派件网点</th></tr>

</thead>

<tbody>

<tr>

<td align="center">19031****755094102</td>

<td align="center">2019-03-19 09:05</td>

<td align="center" class="protection-temple">福佳 185****5039</td>

<td align="center" class="protection-temple">湖南省长沙市望城区********流园B7库</td>

<td id="receivePhone" align="center" class="protection-temple">张维英--180****6191<!--<br--> <button class="btn_sms layui-btn layui-btn-warm layui-btn-xs">发送短信</button> </td><td align="center" class="protection-temple">四川省巴中市恩阳区************茶坝街道</td>

<td align="center"></td>

<td align="center">长沙市场部</td><td align="center">电子面单-菜鸟平台</td>

<td align="center"></td><td align="center">620- 南充中转站</td><td align="center">59-28</td>

<td align="center">05</td>

<td align="center">南充转</td><td align="center"></td></tr><tr>

<td align="center">19031****793504103</td><td align="center">2019-03-19 10:51</td><td align="center" class="protection-temple">王亚 0</td><td align="center" class="protection-temple">江苏省徐州市铜山区****************超市院内</td><td id="receivePhone" align="center" class="protection-temple">张维英--180****6191<!--<br--> <button class="btn_sms layui-btn layui-btn-warm layui-btn-xs">发送短信</button> </td><td align="center" class="protection-temple">四川省巴中市恩阳区************坝街道</td><td align="center"></td><td align="center"></td><td align="center">淘宝线下订单</td><td align="center"></td><td align="center"></td><td align="center"></td><td align="center"></td><td align="center">0</td><td align="center"></td></tr></tbody></table></div>

[此贴子已经被作者于2019/3/21 14:48:40编辑过]

--  作者:有点甜
--  发布时间:2019/3/20 12:42:00
--  

参考

 

http://foxtable.com/bbs/dispbbs.asp?BoardID=2&ID=49278&skin=0

 


--  作者:客人
--  发布时间:2019/3/20 13:08:00
--  
完全没看懂,不知道他是怎么取数据的
--  作者:zto001
--  发布时间:2019/3/20 14:38:00
--  
完全没看懂,不知道他是怎么取数据的
 web.Document.GetElementById("list_elem").
list_elem这是什么,他网页里没找到

--  作者:有点甜
--  发布时间:2019/3/20 14:42:00
--  

那你就改成

 

Dim elems As object = web.Document.GetElementsByTagName("table")

msgbox(elems.count)

msgbox(elems(0).innerHTML)

[此贴子已经被作者于2019/3/20 14:41:41编辑过]

--  作者:zto001
--  发布时间:2019/3/20 16:24:00
--  
可以执行。

但是我对解析不太会
他这解析我也没看懂
    For Each tdelem As object In tdelems
        i = i + 1
        Tables("长江现货").Current(Cols(i)) = tdelem.Innertext
        Tables("长江现货").Current("录入日期") = Date.Today
        If i > 2 Then \'必须要当价格区间列已经有值,才能执行以下代码
            Dim s As String = Tables("长江现货").Current("价格区间")
            Dim s2 As String = s.SubString(5,1) \'价格区间中间的横杠有点特殊,不是键盘上的短横杠.所以用Asc()函数和Chr(-24150))配合来引用.
            Dim k As String = s.IndexOf(Chr(-24150)) \'用Asc(s2)函数获得-的字符编码是-24150
            Tables("长江现货").Current("最高价") = s.SubString(k+1)
            Tables("长江现货").Current("最低价") = s.Remove(k)
        End If
        
        
    Next


--  作者:有点甜
--  发布时间:2019/3/20 17:10:00
--  

 

你只需要循环每一个tr和td就可以啊,不需要照抄人家的代码啊,你弹出各个td的值看看;

 

不会做,请把你的网页,另存一下。单独做一个项目,引用这个网页。发上来测试。

 

 


--  作者:zto001
--  发布时间:2019/3/20 17:40:00
--  
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:desktop.zip

网页如下
--  作者:zto001
--  发布时间:2019/3/20 17:50:00
--  
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:自定义用户管理之二.table

是这样的,麻烦看下,我也不会循环tr、td。复杂一点就不会了
--  作者:有点甜
--  发布时间:2019/3/20 17:52:00
--  

Dim web As System.Windows.Forms.WebBrowser = forms("窗口1").controls("webbrowser1").Basecontrol
Dim elems As object = web.Document.GetElementsByTagName("table")
\'msgbox(elems(0).Innertext)
Dim trs = elems(0).GetElementsByTagName("tr")
For i As Integer = 1 To trs.count-1
    Dim tr = trs(i)
    Dim tds = tr.GetElementsByTagName("td")
    msgbox(tds(0).Innertext)
    msgbox(tds(1).Innertext)
    msgbox(tds(2).Innertext)
Next