以文本方式查看主题

-  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=160584)

--  作者:yyzlxc
--  发布时间:2021/2/7 10:45:00
--  [求助]代码运行错误
代码运行错误,如何修改,请各位老师指教,谢谢!!



DataTables("表C").DataRows.Clear()
For i As Integer = 1 To 10
    Dim web As New System.Windows.Forms.WebBrowser()
    web.Navigate("https://s.askci.com/stock/0-0-0/" & i & "/")
    web.ScriptErrorsSuppressed = True
    Do Until web.ReadyState = 4 AndAlso web.Document.GetElementsByTagName("table").count > 0
        Application.DoEvents
    Loop
    Dim tb = web.Document.GetElementsByTagName("table")
    Dim trs = tb(0).GetElementsByTagName("tr")   \'根据标签得到数据集合
    For i1 As Integer = 1 To trs.count-1
        Dim r As Row = Tables("表C").AddNew
        Dim tds = trs(i1).GetElementsByTagName("td")
        For j As Integer = 0 To tds.count-1
            r("序号") = tds(0).innerText
            r("股票代码") = tds(1).innerText
            r("股票名称") = tds(2).innerText
            r("公司全称") = tds(3).innerText
            r("上市日期") = tds(4).innerText
            r("招股书") = tds(5).innerText
            r("公司财报") = tds(6).innerText
            r("行业分类") = tds(7).innerText
            r("主营业务") = tds(8).innerText
        Next
        web.Dispose
        r.Save()
    Next
Next



图片点击可在新窗口打开查看此主题相关图片如下:捕获2.png
图片点击可在新窗口打开查看






--  作者:有点蓝
--  发布时间:2021/2/7 10:55:00
--  
    Dim tb = web.Document.GetElementsByTagName("table")
if tb.trs.count = 0 then continue for
    Dim trs = tb(0).GetElementsByTagName("tr")   \'根据标签得到数据集合
    For i1 As Integer = 1 To trs.count-1
        Dim r As Row = Tables("表C").AddNew
        Dim tds = trs(i1).GetElementsByTagName("td")
        ‘去掉For j As Integer = 0 To tds.count-1
            r("序号") = tds(0).innerText
            r("股piao代码") = tds(1).innerText
            r("股piao名称") = tds(2).innerText
            r("公司全称") = tds(3).innerText
            r("上市日期") = tds(4).innerText
            r("招股书") = tds(5).innerText
            r("公司财报") = tds(6).innerText
            r("行业分类") = tds(7).innerText
            r("主营业务") = tds(8).innerText
        Next
        web.Dispose
        r.Save()

--  作者:yyzlxc
--  发布时间:2021/2/7 11:10:00
--  
加了标记的代码,运行出错。


图片点击可在新窗口打开查看此主题相关图片如下:捕获3.png
图片点击可在新窗口打开查看



DataTables("表C").DataRows.Clear()
For i As Integer = 1 To 10
    Dim web As New System.Windows.Forms.WebBrowser()
    web.Navigate("https://s.askci.com/stock/0-0-0/" & i & "/")
    web.ScriptErrorsSuppressed = True
    Do Until web.ReadyState = 4 AndAlso web.Document.GetElementsByTagName("table").count > 0
        Application.DoEvents
    Loop
    Dim tb = web.Document.GetElementsByTagName("table")
    If tb.trs.count = 0 Then Continue For
    Dim trs = tb(0).GetElementsByTagName("tr")   \'根据标签得到数据集合
    For i1 As Integer = 1 To trs.count-1
        Dim r As Row = Tables("表C").AddNew
        Dim tds = trs(i1).GetElementsByTagName("td")
        r("序号") = tds(0).innerText
        r("股piao代码") = tds(1).innerText
        r("股piao名称") = tds(2).innerText
        r("公司全称") = tds(3).innerText
        r("上市日期") = tds(4).innerText
        r("招股书") = tds(5).innerText
        r("公司财报") = tds(6).innerText
        r("行业分类") = tds(7).innerText
        r("主营业务") = tds(8).innerText
        web.Dispose
        r.Save()
    Next
Next

--  作者:有点蓝
--  发布时间:2021/2/7 11:21:00
--  
if tb.count = 0 then continue for
--  作者:yyzlxc
--  发布时间:2021/2/7 11:33:00
--  
还是有问题,请有点蓝老师指教,谢谢!!


图片点击可在新窗口打开查看此主题相关图片如下:捕获4.png
图片点击可在新窗口打开查看


--  作者:有点蓝
--  发布时间:2021/2/7 11:37:00
--  
调试技巧:http://www.foxtable.com/webhelp/scr/1485.htm,哪一行出错?
--  作者:yyzlxc
--  发布时间:2021/2/7 11:40:00
--  

运行到7(黄色标记)时出错。(显示到7)

DataTables("表C").DataRows.Clear()
For i As Integer = 1 To 10
    Dim web As New System.Windows.Forms.WebBrowser()
    web.Navigate("https://s.askci.com/stock/0-0-0/" & i & "/")
    web.ScriptErrorsSuppressed = True
    Do Until web.ReadyState = 4 AndAlso web.Document.GetElementsByTagName("table").count > 0
        Application.DoEvents
    Loop
output.Show(1)
    Dim tb = web.Document.GetElementsByTagName("table")
output.Show(2)
    If tb.count = 0 Then Continue For
output.Show(3)
    Dim trs = tb(0).GetElementsByTagName("tr")   \'根据标签得到数据集合
output.Show(4)
    For i1 As Integer = 1 To trs.count-1
output.Show(5)
        Dim r As Row = Tables("表C").AddNew
output.Show(6)
        Dim tds = trs(i1).GetElementsByTagName("td")
output.Show(7)
        r("序号") = tds(0).innerText
        r("股票代码") = tds(1).innerText
        r("股票名称") = tds(2).innerText
        r("公司全称") = tds(3).innerText
        r("上市日期") = tds(4).innerText
        r("招股书") = tds(5).innerText
        r("公司财报") = tds(6).innerText
        r("行业分类") = tds(7).innerText
        r("主营业务") = tds(8).innerText
output.Show(8)
        web.Dispose
output.Show(9)
        r.Save()
output.Show(10)
    Next
output.Show(11)
Next
[此贴子已经被作者于2021/2/7 11:41:36编辑过]

--  作者:有点蓝
--  发布时间:2021/2/7 11:49:00
--  
一样判断一下tds数组的数量是不是为0 

tds.count

--  作者:yyzlxc
--  发布时间:2021/2/7 12:18:00
--  
有点蓝老师,好像还是不行,做一个案例上传,还请指教,谢谢!!


 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:管理项目4.foxdb



--  作者:有点蓝
--  发布时间:2021/2/7 13:38:00
--  
Dim tds = trs(i1).GetElementsByTagName("td")
if tds.count = 9 then
r("序号") = tds(0).innerText
……
end if